log4net.Config.BasicConfigurator.Configure()和log4net.Config.XmlConfigurator.Configure()之间有区别吗?

时间:2010-03-05 23:35:28

标签: .net log4net

我正在使用log4Net进行日志记录。我也有以下一套...

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

好的,现在,当我有以下代码时

log4net.Config.BasicConfigurator.Configure();

我真的没有得到任何详细的内部调试信息,但我确实显示了我记录的任何内容。

现在,当我交换该代码并将其替换为:

log4net.Config.XmlConfigurator.Configure();

我收到很多内部调试xml信息以及我记录的任何内容,都会显示出来。

那为什么呢?这两者有什么区别?

2 个答案:

答案 0 :(得分:6)

是的。如果要使用代码而不是配置来配置日志,那么您需要使用BasicConfigurator。 @Aaronaught你的帖子很老了,这可以解释为什么你的陈述:

  

BasicConfigurator只允许在根目录下配置一个appender,它只能登录到控制台。

.. 不正确。我在2015年3月使用BasicConfigurator进行事件,文件和数据库日志记录。它还支持每个记录器多个appender。我的log4net是以编程方式配置的,而不是从配置文件中配置的。

答案 1 :(得分:5)

BasicConfigurator只允许在根目录下配置一个appender,它只能登录到控制台。它并没有真正为您提供任何调试信息,因为实际上不是任何调试信息。

XmlConfigurator为您提供了一整套log4net配置选项 - 有关详细信息,请参阅手册的Configuration部分。它实际上以一个使用BasicConfigurator的示例开始,并继续显示您可以在XML中设置的所有其他属性。

在生产应用程序中,您可能希望使用不同的记录器,使用不同的阈值和区域;您可能会从几个不同的组件接收日志信息,并且不希望为每个组件执行完全相同的日志记录。你也肯定想要登录控制台以外的地方 - 日志文件,事件日志,电子邮件警报等等。您只能使用XmlConfigurator

执行此操作