我将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"
数据?
答案 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"
}
}
不要同时使用 outputTemplate
和 formatter
。
此配置为我提供了变量 @t
、@mt
、@l
、SourceContext
。
注意 @l
不包括在 Information
级别,因为它被认为是默认值。