2010-03-05 45 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是以编程方式配置的,而不是来自配置文件。