先說Log4net,它是.net平臺上一個老牌的日誌框架,我接觸的時間也不長(由於公司有本身的日誌庫),可是看着各開源庫都在用這個因而前段時間也嘗試去了解了一下。html
首先讓我認識到Log4net強大的地方就是它的多目標輸出,能夠輸出到控制檯、文件、數據庫、系統事件、Email等,幾乎無所不能。而後它能夠經過配置讓日誌系統實時生效,好比說在服務運行的過程當中修改配置改變輸出目標,改變日誌等級等,均不用重啓程序。可是Log4net也有一個讓我比較頭痛的地方就是感受配置過於複雜,根本記不住,每次都必須去查閱資料,因而乎以前我也針對Log4net作了一個簡單的封裝,內嵌了一個默認使用文件存儲的日誌配置,提供靜態日誌方法,還提供一套性能統計的API(貌似Visual Studio 2015後IDE已自帶了)。如下是這個封裝的源代碼地址:github,nuget地址:nuget。git
下面說說爲何又關注起NLog了,Nlog沒有Log4net老牌,使用從Nuget下載量來看也沒有Log4net用戶量大,可是它卻一直在保持高速的更新狀態,從github主頁上看它所支持的平臺也至關普遍,從.net環境到mono再到如今最新的Xamarin均支持:
github
下面這個是一篇比較這兩種日誌的文章,應該是翻譯的StackOverFlow再加上做者本身的一些看法: http://www.cnblogs.com/wanglee/archive/2013/05/22/3092474.html。數據庫
下面是總結的幾點apache
項目 | log4net | nlog |
---|---|---|
流行程度 | 勝 | 負 |
易用性 | 負 | 勝 |
動態配置 | 平 | 平 |
輸出目標 | 平 | 平 |
跨平臺 | 負 | 勝 |
開源持續維護 | 負 | 勝 |
日誌性能 | 負 | 勝 |
這是用這兩款日誌框架寫的一個性能比較的Demo,暫時只比較了文件記錄日誌的狀況(由於相對來講這種狀況應該是最多的),附上源碼地址。
性能比較結果如圖,分別是Debug條件編譯下的單線程和並行多線程以及獨佔鎖和最小衝突鎖的狀況:多線程
以上性能測試再也不有效,根據網友反饋,因爲輸出內容的略有差別致使上面性能測試出現不公平的狀況,log4Net在輸出時可能會有更多的計算量。在優化測試代碼狀況下,僅讓日誌框架打印日誌內容,其他的包括時間、日誌等級、日誌類名一概不打印,使用最新版Dll,兩個框架性能相差無幾。框架
推薦閱讀:
NET開源項目介紹及資源推薦:http://www.cnblogs.com/Terrylee/archive/2006/12/03/opensource_framework_and_resource_recommendation_Log.html開源項目介紹
附加連接:
log4net:https://logging.apache.org/log4net/
NLog:https://github.com/NLog/NLog性能