2018年10月15日 星期一

高負載 .NET Logging 議題與 NLog 極端效能調校

跟同事討論到高負載 .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 保存推測是效能較差原因。


原始介紹文章出自於此


沒有留言:

張貼留言