Serilog.Sinks.MsSqlServer 无法使用 ASP.NET Core 2.2 Web API

Serilog.Sinks.MsSqlServer not working with ASP.NET Core 2.2 Web API

我遵循了文档提供的 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}"
        }
      }
    ]
}

我还有以下Program.cs

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>();
}

文件接收器工作正常,但不幸的是我无法在 SQL 服务器中获取我的日志条目。 table 不会被创建。我也没有收到任何关于 DB Sink 的异常抛出。

发现问题出在 Serilog.Sinks.MsSqlServer 的版本上。使用最新的开发版本可以正确使用 json 配置。当前稳定版本 5.12 无法在 json 文件中进行完整配置,但在代码中配置记录器时可以正常工作。

希望对您有所帮助。