日志框架對比 NLog VS Log4net


Log4net

先說Log4net,它是.net平台上一個老牌的日志框架,我接觸的時間也不長(因為公司有自己的日志庫),但是看着各開源庫都在用這個於是前段時間也嘗試去了解了一下。

首先讓我認識到Log4net強大的地方就是它的多目標輸出,可以輸出到控制台、文件、數據庫、系統事件、Email等,幾乎無所不能。然后它可以通過配置讓日志系統實時生效,比如說在服務運行的過程中修改配置改變輸出目標,改變日志等級等,均不用重啟程序。但是Log4net也有一個讓我比較頭痛的地方就是感覺配置過於復雜,根本記不住,每次都必須去查閱資料,於是乎之前我也針對Log4net做了一個簡單的封裝,內嵌了一個默認使用文件存儲的日志配置,提供靜態日志方法,還提供一套性能統計的API(貌似Visual Studio 2015后IDE已自帶了)。以下是這個封裝的源代碼地址:github,nuget地址:nuget

NLog

下面說說為什么又關注起NLog了,Nlog沒有Log4net老牌,使用從Nuget下載量來看也沒有Log4net用戶量大,但是它卻一直在保持高速的更新狀態,從github主頁上看它所支持的平台也相當廣泛,從.net環境到mono再到現在最新的Xamarin均支持:
nlog支持范圍

比較

下面這個是一篇比較這兩種日志的文章,應該是翻譯的StackOverFlow再加上作者自己的一些見解: http://www.cnblogs.com/wanglee/archive/2013/05/22/3092474.html

下面是總結的幾點

項目 log4net nlog
流行程度
易用性
動態配置
輸出目標
跨平台
開源持續維護
日志性能

性能比較(不再有效,詳見文末)

這是用這兩款日志框架寫的一個性能比較的Demo,暫時只比較了文件記錄日志的情況(因為相對來說這種情況應該是最多的),附上源碼地址
性能比較結果如圖,分別是Debug條件編譯下的單線程和並行多線程以及獨占鎖和最小沖突鎖的情況:

性能比較結果

2017年9月1日更新:

以上性能測試不再有效,根據網友反饋,由於輸出內容的略有差異導致上面性能測試出現不公平的情況,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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM