2011-04-24 120 views
1

我在生產服務器上運行c#3.5 winforms桌面應用程序。它使用log4net進行日誌記錄。在log4net xml中更改日誌記錄級別

要求是用戶應該能夠在運行時切換日誌級別...例如:如果級別切換到「INFO」級別,那麼應用程序只能寫入信息級別日誌。 此外,業務不希望通過繼續prod服務器和編輯log4net xml文件來更改日誌級別。

以下哪種方法對此可以適用?或者還有其他更好的方法嗎? 有一個「管理員」的WinForm將使用戶能夠更改日誌級別。 用戶將從他們的桌面登錄到應用程序。

1.然後在應用程序中,我可以使用log4net api從網絡路徑加載log4net xml,使用從UI提供的新級別保存更改,然後使用新級別重新實例化記錄器類。

2.具有2在後端新表....查找表「A」與級ID和Names.And另一個表「B」以與用戶名,當前級別ID和修改日期。

更新表B中UI屏幕提供的級別。 使用.net的Sqlcachedependency,只要表B中的值發生變化,就用新級別重新實例化記錄器類。

謝謝。

回答

1

也許如果你選擇第一選項,它會容易得多。

您可能需要將log4net配置文件複製到本地用戶機器。一旦用戶更改了級別,您將其保存在本地到xml。您可以使用此方法來跟蹤log4net的配置

log4net.Config.XmlConfigurator.ConfigureAndWatch 

最後的變化,則需要重新初始化記錄儀

+0

感謝您的回覆。如果從我的問題中不清楚,但代碼將在服務器端運行,那麼我必須僅在服務器端對日誌xml文件進行更改。 – user74042 2011-04-25 06:33:52

1

默認情況下,log4net在其配置文件上掛鉤文件更改通知,並在文件更新時自動重新配置。所以,我認爲讓你的UI破解配置文件是最不重要的工作。我認爲最簡單的方法是在服務器上放置一個小應用程序,並在服務器上使用簡單的用戶界面來更改log4net xml配置文件中的日誌級別。

+0

感謝烏拉圭回合的反應......好吧,我們不應該有web應用[按業務需求] ..所以我相信,你說我更好地使用[編輯xml使用log4net API]的第一種方法,而不是使用Sqlcachedependency ..好嗎? – user74042 2011-04-24 11:26:27

+0

log4net觀察文件以進行更改大多屬實。它只會在初始化時告訴它,如果你沒有使用app.config/web.config文件,而是使用自己的配置文件來監視它。我會建議採取這種方法,再加上上面的選項(編輯文件並替換它)。這將是最有意義的。 +1爲好的答案。 – IAmTimCorey 2011-05-03 16:21:21