具有自定义模板和JSON格式程序的Serilog

时间:2018-07-06 13:08:03

标签: asp.net-core serilog asp.net-core-2.1

我将Serilog与ASP.NET Core 2.1结合使用,并通过dotnet publish...对其进行配置。

默认模板不包含appsettings.json,所以我使用了自己的模板。但是我也想要使用JSON进行结构化日志记录。

我在Serilog Wiki上读到某个地方,无法同时指定{SourceContext}(用于JSON输出)和formatter

例如,我不能这样做:

outputTemplate

那么我如何获取JSON输出,又如何获取我需要的"outputTemplate": "{Timestamp:yyyy-MM-dd} {Level:u3} {SourceContext} {Message:lj}{NewLine}{Exception}", "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact" 数据?

1 个答案:

答案 0 :(得分:0)

我不确定自提出问题以来发生了什么变化,但现在我确实得到了 SourceContext 变量。我在 ASP.NET Core 5 上使用 Serilog.AspNetCore 版本 3.4.0

这有效:

{
  "Name": "File",
  "Args": {
    // ...
    //"outputTemplate": "",                          // DO NOT USE THIS
    "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
  }
}

不要同时使用 outputTemplateformatter

此配置为我提供了变量 @t@mt@lSourceContext

注意 @l 不包括在 Information 级别,因为它被认为是默认值。