我是Serilog的新手,我正在努力只在需要时显示类名,而不必在每条日志消息中添加{SourceContext:l}
。我知道我可以把代码编写为:
Log.ForContext<Class1>().Verbose("message {SourceContext:l}");
我的记录器设置如下:
var log = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo
.ColoredConsole(outputTemplate: "{Timestamp:G} [{Level}] {SourceContext} {Message}{NewLine:l}{Exception:l}")
.CreateLogger();
我希望只有在指定类时才显示类名。
Log.ForContext<Class1>().Verbose("message");
如果创建日志,则不显示。
Log.Verbose("message");
但是在上面的示例中,它将以格式打印注销 &#39; {SourceContext}消息&#39;而不仅仅是&#39;消息&#39;这不是我想要的。
答案 0 :(得分:2)
这可能是ColoredConsoleSink
中的错误 - 通常在渲染输出标记时,缺失值将保留为空白。
提出:https://github.com/serilog/serilog/issues/649
您可能会尝试切换到我认为不存在此错误的Literate Console接收器(https://github.com/serilog/serilog-sinks-literate)。