2017-03-08 100 views
1

剛剛開始與Serilog一起工作,它相當不錯,但我有點困惑。使用Serilog記錄WebAPI 2中的重要信息

如果我的控制器的操作出現錯誤,我想盡可能多地從請求(頭文件,參數等)中記錄儘可能多的有用的信息。

什麼是最好的方式去呢?

回答

1

你可以看看使用Enrichment功能

按照從鏈接的文檔,你會構建類似的記錄器

var log = new LoggerConfiguration() 
.Enrich.WithThreadId() 
.WriteTo.Console() 
.CreateLogger(); 

「通過日誌寫的所有事件將攜帶一個屬性線程ID與(按照慣例,Enrich上的任何.WithXyz()方法都會創建名爲Xyz的屬性。)「

Github上的一個示例是SerilogWeb.Classic。它提供了一些用於從請求中捕獲某些信息的集合,例如

var log = new LoggerConfiguration() 
.WriteTo.ColoredConsole() 
.Enrich.With<HttpRequestIdEnricher>() 
.Enrich.With<UserNameEnricher>() 
.CreateLogger(); 

你可以按照類似的apporach,創建,捕捉你總是想要的信息輸出在日誌中的富集,然後使用濃縮塔初始化你的記錄。

+1

'SerilogWeb.Classic.WebApi'還添加了一些WebAPI信息,我想:https://github.com/serilog-web/classic-webapi –