初始配置后将 Enrich.WithProperty 添加到 serilog 全局记录器

red*_*510 4 .net logging serilog

我们有一个带有 Main() 方法的服务,它像这样初始化我们的 serilog 记录器:

            Log.Logger = new LoggerConfiguration()
               .MinimumLevel.Debug()
               .WriteTo.ColoredConsole()
               .WriteTo.Seq(ConfigurationManager.AppSettings["SeqServer"], apiKey: ConfigurationManager.AppSettings["SeqApiKey"])
               .Enrich.WithProperty("ServiceName", "SomeConsumer")                   
               .CreateLogger(); 
Run Code Online (Sandbox Code Playgroud)

现在,以不同的方法,我想为这个记录器附加一个额外的属性。我想添加一个 .Enrich.WithProperty,因为我喜欢 Log.Error("Somelog")

我怎样才能做到这一点?我只想用一些字符串附加一个新属性。

Cai*_*ete 5

在该方法之后,CreateLogger您不能修改创建的记录器实例。如果一个特定的方法或类只想在那个特定的上下文中用更多的变量来丰富日志,那么这ForContext就是要走的路。

另一种方法是创建一个您在开始时设置的动态自定义丰富器,但这将根据某些逻辑改变其行为。

2021 年 8 月 21 日更新:您现在可以在创建 Serilog 管道后使用Serilog.Enrichers.GlobalLogContext来包含全局属性。