標籤:eve 詳細 htm 設定檔 檔案中 blog arc www 日誌記錄
原文地址:實現多個LOG4NET日誌記錄器執行個體
本文內容為摘抄,請查看原文。
對於.NET Framework開發人員來說,使用Log4Net進行日誌記錄是非常方便的,通常只要寫好設定檔和簡單的編碼就可以輕鬆實現應用程式的日誌記錄功能。但是因為很多時候我們做開發沒有時間詳細閱讀文檔,所以也會因疏忽犯很多錯誤,下面寫的就是因為沒有仔細閱讀設定檔文檔引發的一個錯誤。
應用環境:
一個Web應用程式,採用三層體繫結構,所以記錄日誌的時候分為應用程式記錄檔、資料訪問日誌和操作記錄日誌三個日誌。三個日誌採用分開檔案儲存的方式,於是建立了三個日誌類,每個日誌類擁有一個Log4Net記錄器的執行個體,產生了以下問題:
1.設定檔中的日誌記錄器名稱對應
一般是在設定檔中增加Logger節點,用name屬性進行對應。在原始碼中建立日誌記錄器(Logger)的時候,使用GetLogger方法和日誌記錄器名稱即可獲得對應的日誌記錄器執行個體。我的日誌記錄其名稱是由類名獲得,使用GetType(…).Name的屬性進行設定。
2.設定檔中各記錄器書寫記錄層級的控制
通過Level標籤可以進行各記錄器的輸出層級控制,分別是Fatal(致命錯誤)、Error、Warning、Info、Debug,對應logger的同名方法。
3.解決同層級日誌書寫到其它日誌記錄器的問題(重點解決)
一般從網路上看到的例子裡面都設定了Root元素,我們也習慣於將Appender加到Root元素中,同時我們也會在各自對應的Logger標籤下面追加Appender。實際上Logger和Root是有繼承關係的,這也就意味著如果你一個Logger對應的Appender也被追加到了Root節點中,即使其它Logger沒有追加此Appender也會通過繼承Root的各項屬性而獲得向這個Appender輸出日誌的能力。讓個別的Logger不繼承Root的方法是在Logger的屬性additivity上設定false即可。
log4net實現多執行個體記錄