作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个带有 Main() 方法的服务,它可以像这样初始化我们的 serilog 记录器:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.ColoredConsole()
.WriteTo.Seq(ConfigurationManager.AppSettings["SeqServer"], apiKey: ConfigurationManager.AppSettings["SeqApiKey"])
.Enrich.WithProperty("ServiceName", "SomeConsumer")
.CreateLogger();
现在,我想用另一种方法向此记录器附加一个附加属性。我想添加一个 .Enrich.WithProperty,因为我喜欢的日志记录风格Log.Error("Somelog")
我怎样才能做到这一点?我只想用一些字符串附加一个新属性。
最佳答案
在方法CreateLogger
之后,您无法修改创建的记录器实例。如果特定方法或类想要仅在特定上下文中使用更多变量来丰富日志,那么 ForContext
就是正确的选择。
另一种方法是创建一个您在开始时设置的动态自定义丰富器,但这会根据某些逻辑改变其行为。
更新 2021-08-21:您现在可以使用 Serilog.Enrichers.GlobalLogContext创建 Serilog 管道后包含全局属性。
关于.net - 初始配置后将 Enrich.WithProperty 添加到 serilog 全局记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37215215/
我们有一个带有 Main() 方法的服务,它可以像这样初始化我们的 serilog 记录器: Log.Logger = new LoggerConfiguration()
我是一名优秀的程序员,十分优秀!