log4net.Config.BasicConfigurator.Configure() 和 log4net.Config.XmlConfigurator.Configure() 有什么区别?(涉及IT技术)

9
我正在使用 log4Net 进行日志记录。我还设置了以下内容...
<log4net debug="true"> .. </>

好的,现在我有以下代码:

log4net.Config.BasicConfigurator.Configure();

我并没有得到任何冗长的内部调试信息,但是我可以获取我记录的所有内容。

现在,当我将那段代码替换为以下代码时:

log4net.Config.XmlConfigurator.Configure();

我得到了很多内部调试的XML信息,任何我记录的内容都会被显示出来。

那么这是为什么呢?它们之间有什么区别?

2个回答

8
是的,有一种方法可以在代码中配置日志记录,而不是从配置文件中配置,那就是使用BasicConfigurator。@Aaronaught,您的帖子可能已经过时了,这也解释了为什么您的声明:
“BasicConfigurator只允许在根节点配置一个appender,并且它只能记录到控制台。”
是错误的。我自2015年3月以来一直在使用BasicConfigurator进行事件、文件和数据库日志记录。它还支持每个记录器多个appender。我的log4net是通过编程方式配置的,而不是从配置文件中配置。

7
BasicConfigurator 只允许在根目录下配置一个 appender,并且只能将日志记录到控制台。它实际上并没有提供任何调试信息,因为不存在任何调试信息。 XmlConfigurator 提供了完整的 log4net 配置选项 - 详见手册中的 Configuration 部分。它实际上是以使用 BasicConfigurator 的示例开始,并继续显示您可以在 XML 中设置的所有其他属性。
在生产应用程序中,您可能需要具有不同的记录器,使用不同的阈值和区域的不同 appender;您可能会从几个不同的组件接收日志信息,不希望为每个组件执行完全相同的日志记录。此外,您肯定希望将日志记录到除控制台之外的其他位置 - 日志文件、事件日志、电子邮件警报等。您只能通过使用 XmlConfigurator 实现这一点。

AH,明白了。我目前有两个appender——ConsoleAppender和OutputDebugStringAppender——所以我会使用XmlConfigurator。我以后还会添加更多的生产环境,谢谢伙计。 - Pure.Krome
5
实际上,您可以配置BasicConfigurator将日志记录到文件中,参见http://marc.info/?l=log4net-user&m=117974721929259&w=4 - Pavel Chuchuva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接