ASP.Net Core 2中的Serilog JsonFormatter未从appsettings文件中应用

时间:2018-02-06 15:25:11

标签: c# .net-core asp.net-core-2.0 serilog

我有一个ASP.Net Core 2 Web应用程序,我试图将SeriLog配置为以JSON格式输出,通过appsettings.json文件配置。我无法使用标准的Serilog.Formatting.Json.JsonFormatter或紧凑的Serilog.Formatting.Compact.CompactJsonFormatter。

我在那里看到了一个类似的问题here,但似乎没有使用appsettings.json的确定答案,并且该线程已经安静了一年多(我不知道)有足够的声誉评论推动进一步的回应)。

我使用以下SeriLog软件包:

  • Serilog.AspNetCore - 2.1.0
  • Serilog.Enrichers.Environment - 2.1.2
  • Serilog.Enrichers.Thread - 3.0.0
  • Serilog.Formatting.Compact - 1.0.0
  • Serilog.Settings.Configuration - 2.4.0
  • Serilog.Sinks.RollingFile - 3.3.0

我的appsettings.json文件的SeriLog部分显示为:

"Serilog": {
  "Using": ["Serilog.Sinks.RollingFile"],
  "MinimumLevel": {
    "Default": "Verbose",
    "Override": {
      "Microsoft": "Warning",
      "System": "Warning"
    }
  },
  "WriteTo": [
    {
      "Name": "RollingFile",
      "Args": {
        "pathFormat": "C:\\Logs\\MLSBPortal-{Date}.txt",
        "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
        "restrictedToMinimumLevel": "Debug",
        "retainedFileCountLimit": "10",
        "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] [{ThreadId}] [{SourceContext}] [{SessionId}] [{UserName}]: {Message}{NewLine}{Exception}"
      }
    }
  ],

在使用默认JSON格式化程序进行测试时将格式化程序行修改为以下内容:

"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog",

正如其他多个地方所建议的那样。

我的输出写得很好,但格式化程序设置似乎没有对输出产生任何影响。

我在这里做错了,或者这个功能是不是通过配置文件实现的?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

事实证明,(目前)无法同时指定formatter和outputTemplate(如https://github.com/serilog/serilog-aspnetcore/issues/31所述)。

希望将来这种情况可能会改变......