在消息模板中添加 ForContext<T> 的类型名称

问题描述 投票:0回答:1

我想总是在日志消息前加上它们发出的类别。它可以手动完成,但如果可以自动完成就更好了,所以不是每个日志调用都需要明确包含环境上下文。

是否可以使用例如ForContext 然后记录 T 的实例类型名称,将其包含在日志记录配置的消息模板中?

public class Foo
{
    public Foo(ILogger logger)
    {
        var logger = logger.ForContext<Foo>();
        logger.Information("Bar"); // written log message should include both "Foo" and "Bar"
    }
}
logging serilog
1个回答
0
投票

是的,这就是Source Context的想法;

ForContext
将标签添加到捕获的 LogEvent 中,该标签具有键:
SourceContext
和值
Namespace.Foo
。您需要在
消息模板
中包含
{SourceContext}
{Properties}才能发出它。

我怀疑这不是重复的,我希望有人花时间找到更完整的答案并关闭这个答案;)


我建议的另一件事是阅读 https://serilog.net - IME 一般来说,您越遵循结构化日志记录的精神,您对日志消息中的源上下文的依赖就越少。

© www.soinside.com 2019 - 2024. All rights reserved.