如果定义了 ForContext,是否可以只在 Serilog 中显示 SourceContext
本文关键字:Serilog SourceContext 显示 是否 ForContext 定义 class 如果 | 更新日期: 2023-09-27 18:32:00
我是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");
但是,在上面的示例中,它将以以下格式打印注销日志"{SourceContext} 消息"而不仅仅是"消息",这不是我想要的。
这可能是
ColoredConsoleSink
中的一个错误 - 通常在渲染输出令牌时,缺失值将留空。
提高:https://github.com/serilog/serilog/issues/649
您可以尝试切换到我认为没有此错误的识字控制台接收器 (https://github.com/serilog/serilog-sinks-literate)。