2016-07-20 101 views
7

我將所有類型的事件記錄到單個Json文件,而不考慮LogLevel。現在我需要將一些自定義性能計數器記錄到單獨的Json文件中。這怎麼可能在Serilog中完成。我應該創建不同的記錄器實例並使用該記錄器來記錄性能計數器嗎?要使用此與LibLogSerilog:登錄到不同的文件

+0

的可能的複製[Serilog - 多個日誌文件(https://stackoverflow.com/questions/28292601/serilog-multiple-log-files) –

回答

2

可以通過先確保性能計數器事件的標籤與任何一個特殊的屬性值(OpenMappedContext()在LibLog)或特定類型/命名空間做到這一點。

var log = LogProvider.For<MyApp.Performance.SomeCounter>() 
log.Info(...); 

在配置Serilog,與應用可以只發送所需的事件,第二個文件過濾器sub-logger

Log.Logger = new LoggerConfiguration() 
    .WriteTo.Logger(lc => lc 
     .Filter.ByExcluding(Matching.FromSource("MyApp.Performance")) 
     .WriteTo.File("first.json", new JsonFormatter())) 
    .WriteTo.Logger(lc => lc 
     .Filter.ByIncludingOnly(Matching.FromSource("MyApp.Performance")) 
     .WriteTo.File("second.json", new JsonFormatter())) 
    .CreateLogger(); 
+0

看了你寫了起來:Serilog 2.0冒險與子記錄器。不確定如果我錯過了某些東西,但是,如果我這樣做了,「MyApp.Performance」中的日誌也會轉到外部日誌記錄器上嗎?我不想將這些特定的日誌寫入主日誌文件。 – Shetty

+0

添加兩個具有逆濾波器的子日誌管道應該這樣做。更新回答.. –

+0

這對我很有幫助。編輯回答刪除JsonFormatter。 – Shetty