我們有一個非常高性能的多線程.NET HTTP處理程序應用程序,並希望啓用跟蹤日誌記錄以進行調試。我對此有幾個問題:跟蹤日誌.NET HTTP處理程序的最佳方式是什麼?
- tracelevel是切換開/關日誌的最佳方式嗎?
- 如果tracelevel爲「off」,tracelevel語句是否會對性能產生影響?
- 使用HTTP處理程序時,如何實時查看跟蹤日誌?
- 企業庫對此是否過分矯枉過正?它是否提供任何開銷?
我們有一個非常高性能的多線程.NET HTTP處理程序應用程序,並希望啓用跟蹤日誌記錄以進行調試。我對此有幾個問題:跟蹤日誌.NET HTTP處理程序的最佳方式是什麼?
企業庫似乎矯枉過正,在許多情況下,但是這可能只是艱鉅的配置。
log4net很棒。他們提供「無性能影響」日誌體驗的方式是通過從靜態只讀變量中預測對記錄器的調用。由於靜態只讀變量在你的類型的初始化過程中被設置,所以JIT可以考慮這一點,並簡單地在案例中移除對記錄器的調用。請注意,這意味着您不能即時重新配置。
另一種選擇是Event Tracing for Windows(ETW)。性能調整爲內核的使用和所謂優秀「!而只有使用上 一個P3 500MHz的5%的CPU負載,我們已經取得了每 秒20,000個事件」
(從http://blogs.msdn.com/ryanmy/archive/2005/05/27/422772.aspx)
但是,.NET集成會增加一些開銷,和.NET的集成也不是很愉快的,或者說,IMO。另外,您可以很好地集成到Windows事件日誌系統中,並讓系統管理員在生產中打開和關閉不同的日誌記錄 - 而無需爲您的應用程序使用專用工具。