假設,爲了爭辯,我有30個需要有日誌記錄框架的asp.net web應用程序(和站點,blerg)。我目前的解決方案是使用企業庫日誌記錄。聞聽此事會在網站上包括以下步驟:幫助我找到適用於asp.net應用程序的最小摩擦日誌記錄解決方案
- 兩個組件(EL日誌記錄和公用)
- 添加代碼的global.asax.cs仿製未處理的錯誤在enterpriseLibrary捕捉
- 副本添加引用的.config,從另一個應用程序已經已經登錄FileConfigurationSource.cs
- 副本(它允許您覆蓋的硬編碼路徑enterpriseLibrary.config的要求)在FileConfigurationSource.cs
- 改變命名空間到新項目複製
- 複製從另一個項目所特有的EL(2段)的web.config部分
- 在web.config中改變命名空間EL在新項目
- 測試,確保它的工作(通常由數據庫脫機)
所有這些都是我說的摩擦。如果你問我,那就是DRY的很多違規行爲,尤其是在所有enterpriseLibrary.config設置中。理想情況下,添加日誌記錄將是一個兩步驟的過程 - 這將幫助我在整個團隊中採用它。
我不知道是否有.net的日誌解決方案,沒有所有這些重複?我可以找到的所有這些(log4net,nlog,EL Logging)似乎都使用這種「每個應用都有自己的配置,具有大量的重複」模式。也許我錯過了一些東西。
實際上,我們的每個應用程序都會有一個與其他99%相同的日誌記錄解決方案。他們在存儲日誌的位置和應用程序的調用方面會有所不同。有沒有辦法使用三大日誌解決方案之一,讓您在機器級別或更集中的地方設置日誌記錄行爲?我意識到有一個集中日誌配置有缺點。
同樣重要:必須能夠動態更改日誌記錄級別(在web.config中不存儲日誌記錄配置,導致應用程序重新啓動),並且日誌記錄必須可配置爲部署的一部分(不要在測試版服務器上發送關鍵錯誤的電子郵件)。這兩個使得使用web.config轉換變得困難,因爲對作爲你的構建的一部分而不是web.config的.config運行轉換是困難的。
包含其他日誌文件是一個很好的功能。我會研究它,看看我能否實現某種「機器級」日誌配置。 – jcollum 2011-06-13 17:35:30
@jcollum:確實很好,你也可以在文件名中使用變量,這增加了靈活性。 – 2011-06-13 17:38:49
@jcollum:我通過一些澄清更新了答案。希望你覺得它有用。 – 2011-06-13 17:49:41