2017-07-06 105 views
1

我需要通過僅包含特定上下文數據的子記錄器發送數據。在這種情況下,我非常想忽略消息模板中的所有內容(文本本身除外),並傳遞由豐富和PushContext語句添加的關鍵上下文數據。這主要是爲了創建一個保持一致的儀表板視圖。添加Serilog子記錄器來限制數據到日誌聚合器

LevelSwitch = new LoggingLevelSwitch { MinimumLevel = LogLevelSerilog.Verbose }; 

Log.Logger = new LoggerConfiguration() 
.MinimumLevel.ControlledBy(LevelSwitch) 
.Enrich.With<CorrelationIdEnricher>() 
.Enrich.With<ThreadIdEnricher>() 
.Enrich.FromLogContext() 
.WriteTo.Seq("http://localhost/Response") 
// Filter to a sublogger for instrumentation... 
.WriteTo.Logger(lc => lc.MinimumLevel.Information() 
         .WriteTo.Seq("http://localhost/Public") 
         .Filter.ByIncludingOnly(q => q.Properties.ContainsKey("Controller") 
                || q.Properties.ContainsKey("Action") 
                || q.Properties.ContainsKey("Class") 
                || q.Properties.ContainsKey("Method") 
                || q.Properties.ContainsKey("Organization") 
                || q.Properties.ContainsKey("OrganizationId") 
                || q.Properties.ContainsKey("CorrelationId"))) 
.CreateLogger(); 

任何想法,爲什麼這不是發送任何事件到子記錄器? (想通了)

任何想法,爲什麼我從主記錄器(每級允許)獲取所有內容?我期望過濾器可以減少進入子記錄器的數據量。即:我只想過濾的數據去到子記錄器。任何添加的數據都應該從日誌中刪除。

回答

1

外記錄器需要有才能啓用至少Information水平這個工作 - 如果LevelSwitch設置爲WarningError,這可以解釋缺席事件到達子記錄儀。

+0

已設置爲詳細。添加了對原始帖子的編輯以顯示此內容。 –

+0

我現在正在將事件發送到第二個Seq實例。實例設置時發現是拼寫錯誤。但是,ByIncludingOnly的行爲並不如預期。如果有任何屬性出現,我會得到主記錄器的確切副本。我預計除了列表中的所有屬性外,所有屬性都將被刪除。 –