使用输出模板时,Serilog中是否有任何设置可以告诉消息模板中变量的名称?
_logger.LogWarning(@"Role with Id {RoleId} not found", id);
我使用日志记录文件,并希望看到RoleId字段与消息一起记录在文件中,因此我可以使用该字段进行过滤。 我的Serilog设置看起来像
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactory": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "bin/Debug/netcoreapp2.0/Logs/log-.txt",
"rollingInterval": "Day",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss zzz} {Level:u3} {SourceContext} {Message:lj} {RequestId} {Properties} {NewLine} {Exception}"
//"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}]
}
我知道我可以使用LogContext.PushProperty("RoleId", id)
,但这不是我自己的选择,也不能使用CompactJsonFormatter
。
答案 0 :(得分:0)
我发现日志是否已写入文件,并且$
后跟字段(非对象)(_logger.LogWarning("Role with Id {$RoleId} not found", id);)
Serilog将生成消息模板,带有$ sign的字段名称和字段值。还需要在{Properties}
中指定outputTemplate
。