SERILOG:ForContext和and之间的区别

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

我使用静态Logger进行以下设置:

Log.Logger = new LoggerConfiguration()
.WriteTo.Seq("http://localhost:5341)
.CreateLogger();

在我的所有微服务中都有以下内容:

_log = Log.ForContext<GameBase>()
            .ForContext("CustomerID", CustomerID);

此代码在每个事件中插入CustomerID属性,但不在消息正文中插入。

问题:有没有办法丰富此上下文的所有日志,以便MESSAGE BODY也包含此信息?就像一个将字符串添加到每个消息体的丰富程序?我确实希望在活动中看到一些项目,而无需深入了解每个事件。

另外,我没有找到关于Enrichers的更多文档。有没有显示完整的上下文路径?

serilog
1个回答
1
投票

消息体在Sink级别配置,通常通过定义outputTemplate(如果Sink支持它,而不是所有它都支持它)。通过使用ForContext,您可以将CustomerID属性用于写入此日志实例的所有消息,但是您在Sink配置中定义了如何使用/显示此属性。

您可以在Formatting Output下的Serilog文档中看到示例

Formatting Output

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