serilog - SERILOG:ForContext 和和之间的区别
问题描述
我正在使用具有以下设置的静态 Logger:
Log.Logger = new LoggerConfiguration()
.WriteTo.Seq("http://localhost:5341)
.CreateLogger();
在我的所有微服务中包含以下内容:
_log = Log.ForContext<GameBase>()
.ForContext("CustomerID", CustomerID);
此代码在每个事件中插入一个 CustomerID 属性,而不是在消息正文中。
问题:有没有办法丰富此上下文的所有日志,以便 MESSAGE BODY 也包含此信息?就像一个会在每个消息正文前附加一个字符串的浓缩器?我真的很想在活动中看到一些项目,而不必深入研究每个活动。
此外,我没有找到太多关于 Enrichers 的文档。是否有一个不显示完整的上下文路径?
解决方案
消息体是在 Sink 级别配置的,通常通过定义一个outputTemplate
(如果 Sink 支持,不是所有的都支持)。通过使用,ForContext
您使该CustomerID
属性可用于写入此日志实例的所有消息,但在 Sink 配置中,您可以定义如何使用/显示此属性。
您可以在格式化输出下的 Serilog 文档中查看示例
推荐阅读
- yaml - 如何根据 IAM 角色 CloudFormation 模板中的参数提供不同的条件
- c# - 为什么读取由进程启动的 server.js 中的证书会导致进程终止?
- python - 如何持久化Python海龟图形屏幕
- ios - TouchableWithoutFeedback 会中断 ScrollView。如何在不将视图放入 ScrollView 的情况下进行修复?
- angular - Angular Datables 固定标头
- swift - 无法使用“String”类型的索引为“[Any]”类型的值下标
- awk - 合并特定列中的前两行
- pseudocode - 程序的时间复杂度
- python - 使用数据生成更漂亮的图
- python - NCHW和NHWC网络格式转换Tensorflow模型