我在 ASP.NET Core 2.1 中使用 Serilog,并通过 appsettings.json
配置它.
默认模板不包括 {SourceContext}
,所以我使用我自己的模板,其中包含它。但我也希望使用 JSON 进行结构化日志记录。
我在 Serilog wiki 的某个地方读到我无法指定 formatter
(用于 JSON 输出)和 outputTemplate
同时。
所以我不能这样做,例如:
"outputTemplate": "{Timestamp:yyyy-MM-dd} {Level:u3} {SourceContext} {Message:lj}{NewLine}{Exception}",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
那么如何获得 JSON 输出,同时获得
SourceContext
我需要的数据?
最佳答案
我不确定自提出问题以来发生了什么变化,但现在我确实得到了 SourceContext
多变的。我正在使用 Serilog.AspNetCore
版本3.4.0
, 在 ASP.NET Core 5 上。
这有效:
{
"Name": "File",
"Args": {
// ...
//"outputTemplate": "", // DO NOT USE THIS
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
只是不要使用 outputTemplate
和 formatter
同时。这个配置给了我变量
@t
, @mt
, @l
, SourceContext
.备注
@l
不包括在 Information
中级别,因为这被认为是默认值。
关于asp.net-core - 带有自定义模板和 JSON 格式化程序的 Serilog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51211127/