跟同事討論到高負載 .NET Logging 議題。某程式有巨量 Log 寫入需求,執行幾小時 Log 量可達數 GB,甚至懷疑寫 Log 可能成為效率瓶頸之一,程式目前使用 log4net,考是是否應更換成其他 Log 程式庫?如果要換,有哪些選擇?
早年用過 log4net,複雜的 XML 設定檔常讓我吐血,直到發現 NLog,二話不說立刻跳槽沿用至今,沒想過要換也就沒再留意其他 Log 程式庫,趁此機會做點功課。
把研究議題訂為「高負載 .NET Logging 解決方案評估」,如前述專案需求,以效能為首要考量。網路上討論較多的 .NET Log 程式庫有以下幾種:
log4net
NLog
Serilog
Microsoft Enterprise Library
NSpring
ELMAH
整理爬文心得如下:
Benchmarking 5 popular .NET logging libraries
2016 年的評測,比較 log4net、ELMAH、NLog、MS Enterprise Library、NSpring,結論:NLog 最快,效能是 log4net 的五倍,第二名是 MS Enterprise Library,NSpring 第三,ELMAH 殿後,效能只有 NLog 的 1/10。
在設定及便捷性方面,NLog、log4net 較佳,NSpring 較麻煩,Enterprise Library 不辱其「企業級」之名,一整個複雜。ELMAH 只能搭配 ASP.NET 應用範圍較窄,每個事件以 XML 保存推測是效能較差原因。
原始介紹文章出自於此
沒有留言:
張貼留言