2010-03-05 44 views
6

我正在使用log4Net進行日誌記錄。我也有下面的一組...log4net.Config.BasicConfigurator.Configure()和log4net.Config.XmlConfigurator.Configure()有什麼區別嗎?

<log4net debug="true"> .. </> 

好了,現在,當我有以下代碼

log4net.Config.BasicConfigurator.Configure(); 

我真的不獲得任何詳細的內部調試信息,但我得到顯示任何我登錄。

現在,當我出掉的代碼,並用此替代它:

log4net.Config.XmlConfigurator.Configure(); 

我得到了很多的內部調試XML信息,任何事情我登錄,獲取顯示。

那麼爲什麼這樣呢?兩者有什麼區別?

回答

5

BasicConfigurator只允許一個appender在根目錄下配置,它只能登錄到控制檯。它並不真的給你任何調試信息,因爲不是真的任何調試信息。

XmlConfigurator爲您提供了全套的log4net配置選項 - 詳細信息請參見手冊的Configuration部分。它實際上以一個使用BasicConfigurator的例子開始,並繼續向您展示您可以在XML中設置的所有附加屬性。

在生產應用程序中,您可能希望使用不同的閾值和區域使不同的appender具有不同的記錄器;您可能會收到來自多個不同組件的日誌信息,並且不希望爲每個組件執行完全相同的日誌記錄。你也一定要登錄到控制檯以外的地方 - 日誌文件,事件日誌,電子郵件警報等等。您只能使用XmlConfigurator執行此操作。

+0

AH。疑難雜症。我目前有兩個appender - ConsoleAppender和OutputDebugStringAppender - 所以我會使用XmlConfigurator。我以後也會爲生產增加更多。謝了哥們。 – 2010-03-06 02:49:43

+4

實際上,您可以配置BasicConfigurator以記錄文件,請參閱http://marc.info/?l=log4net-user&m=117974721929259&w=4 – 2012-09-25 06:31:47

4

是的。如果你想在代碼中配置日誌,而不是從配置中配置,那麼你需要使用BasicConfigurator。 @Aarounaught您的帖子很舊,這可以解釋爲什麼您的聲明:

BasicConfigurator只允許一個appender配置,在根,它只能登錄到控制檯。

..是不正確。自2015年3月起,我使用BasicConfigurator進行事件,文件和數據庫日誌記錄。它還支持每個記錄器多個appender。我的log4net是以編程方式配置的,而不是來自配置文件。