2016-02-27 99 views
6

我將Serilog集成到我創建的現有多類圖層和多裝配解決方案中。我以前使用的日誌記錄技術只是簡單地將事件傳遞給圖層。我想擺脫這一點。一個用於多項目解決方案的記錄器

我讀過我可以使用app.config文件將記錄器配置加載到我的庫中的每個類中,但是如何在多裝配項目中執行此操作。

我有一個頂級/啓動項目和兩個類庫項目。我想爲整個程序使用與兩個接收器相同的記錄器。

這是我發現的文章至今

https://github.com/serilog/serilog/wiki/AppSettings

http://nblumhardt.com/2014/04/xml-configuration-for-serilog/

有人能解釋如何做到這一點?

回答

5

Serilog允許您爲每個程序使用記錄器配置;儘管可以逐級調整日誌記錄,但這通常是在過濾之後進行的。

推薦的方法是:

設置Serilog的第一件事就是Program.Main()或任何你的應用程序的入口點是:

Log.Logger = new LoggerConfiguration() 
    .WriteTo.Sink1() 
    .WriteTo.Sink2() 
    .CreateLogger(); 

聲明本設置靜態Log類。在您的應用程序的其他地方,您現在可以編寫:

Log.Information("This is a message"); 

並且該消息將傳遞給兩個接收器。您可以避開靜態Log,而是通過​​左右,但除非您在此處有強烈的偏好,否則靜態選項不那麼麻煩。

XML/appSettings配置不會更改任何此項。它只是將一些細節的配置文件,所以改變一個代碼塊到:

Log.Logger = new LoggerConfiguration() 
    .ReadFrom.AppSettings() 
    .CreateLogger(); 

並添加:

<add key="serilog:write-to:Sink1" /> 
<add key="serilog:write-to:Sink2" /> 

App.config將有同樣的效果。如果您可以避免使用XML,則代碼中的配置通常不那麼麻煩(移動部分更少)。

相關問題