Asp.net web api Serilog.Sinks.MsSqlServer无法与ASP.NET Core 2.2 Web API一起使用

Asp.net web api Serilog.Sinks.MsSqlServer无法与ASP.NET Core 2.2 Web API一起使用,asp.net-web-api,serilog,Asp.net Web Api,Serilog,我遵循了文档提供的appsettings.json格式,并具有以下内容: "Serilog": { "Using": [ "Serilog.Sinks.MSSqlServer", "Serilog.Sinks.File" ], "MinimumLevel": "Verbose", "Enrich": [ "FromLogCo

我遵循了文档提供的appsettings.json格式,并具有以下内容:

"Serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer", "Serilog.Sinks.File" ],
    "MinimumLevel": "Verbose",
    "Enrich": [ "FromLogContext", "WithThreadId" ],
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "Default",
          "schemaName": "log",
          "tableName": "LogTable",
          "autoCreateSqlTable": true,
          "restrictedToMinimumLevel": "Verbose",
          "batchPostingLimit": 100,
          "period": "0.00:00:30",
          "columnOptionsSection": {
            "disableTriggers": true,
            "clusteredColumnstoreIndex": false,
            "primaryKeyColumnName": "Id",
            "addStandardColumns": [ "LogEvent" ],
            "removeStandardColumns": [ "Properties" ],
            "additionalColumns": [
              {
                "ColumnName": "Username",
                "DataType": "nvarchar",
                "DataLength": 250,
                "AllowNull": false
              }
            ],
            "id": {
              "nonClusteredIndex": true,
              "DataType": "bigint"
            },
            "level": {
              "columnName": "Level",
              "storeAsEnum": false
            },
            "timeStamp": {
              "columnName": "CreatedDate",
              "convertToUtc": false
            },
            "message": { "columnName": "Message" },
            "exception": { "columnName": "Exception" },
            "messageTemplate": { "columnName": "Template" }
          }
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "C:\\Logs\\WishesLog.txt",
          "rollOnFileSizeLimit": true,
          "fileSizeLimitBytes": "5242880",
          "outputTemplate": "{Timestamp:o} [{Level:u3}] ({Username}-{ThreadId}): {Message}{NewLine}{Exception}"
        }
      }
    ]
}
我还有下面的程序

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseSerilog((context, config) => { config.ReadFrom.Configuration(context.Configuration); })
        .UseStartup<Startup>();
}
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.useserlog((context,config)=>{config.ReadFrom.Configuration(context.Configuration);})
.UseStartup();
}

文件接收器工作正常,但不幸的是,我无法在SQL Server中获取日志条目。无法创建该表。我也没有收到任何关于数据库接收器的异常抛出。

发现问题在于Serilog.Sinks.MsSqlServer的版本。使用最新的dev版本可以正确地使用json配置。当前的稳定版本5.12在json文件中进行完整配置时不起作用,但在代码中配置记录器时起作用

希望这能有所帮助。

有关v5.1.3的更多信息