2016-05-13 239 views
2

后serilog全局记录我们有一个服务与初始化我们serilog记录这样一个main()方法:添加Enrich.WithProperty初始配置

  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")

我该怎么做?我只想用一些字符串附加一个新的属性。

回答

3

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

另一种方法是创建一个在开始时设置的动态定制浓缩器,但是它会根据某种逻辑改变其行为。

+0

谢谢澄清 – redwards510

0

我只是尝试了这一点,我想它会做:

SomeMethod() { 
    var log = Log.Logger.ForContext("PropertyName", "Some string I need so bad"); 
    log.Debug("Beginning of log with enrichment"); 

} 

这样我可以避开using块,但我仍然好奇,如果有修改全局日志的方式。记录器对象

+0

这是正确的方式来做你所需要的Serilog。您可以从现有记录器创建记录器,添加上下文变量(一个或多个)。 –