2016-05-13 41 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。您可以從現有記錄器創建記錄器,添加上下文變量(一個或多個)。 –