为什么selectLog4Jconfiguration的属性文件上的XML?

在Log4Jconfiguration的属性文件上使用XML是否有任何理由?

在这个博客中,对这两者的优点进行了有趣的讨论。 以下部分是该博客的引用:

属性可以通过属性文件或XML文件来定义。 Log4j查找名为log4j.xml的文件,然后查找名为log4j.properties的文件。 两者都必须放在src文件夹中

属性文件不如XML文件冗长。 XML需要将log4j.dtd放置在源文件夹中。 XML需要一个dom4j.jar,可能不包含在较旧的Java版本中。

属性文件不支持一些高级configuration选项,如filter,自定义ErrorHandler和特殊types的appender,即AsyncAppender。 ErrorHandlers定义了如何处理log4j本身的错误,例如configuration不当的appender。 filter更有趣。 从可用的filter,我认为属性文件真的缺less关卡范围filter。

这个filter允许定义一个[n] appender应该接收从Level INFO到WARN的日志消息。 这允许在不同的日志文件中分割日志消息。 一个用于DEBUGGING消息,另一个用于警告,…

属性appender只支持最低级别。 如果您将其设置为INFO,您还将收到WARN,ERROR和FATAL消息。


为了解决我原来的答案的意见:斜体是我的重点。 为了本教程的目的,作者select了忽略,或者无意中忽略了这些属性或xml只需要在类path上,而不需要在src文件夹中。 将它们添加到类path中的简单方法是将它们添加到src文件夹中,因此本教程的目的显然是足够的。

没有一个与问题直接相关,或者答案的意图是讨论使用xml文件configurationlog4j的优劣。 我认为,引用的其余部分对那些希望作出明智select的人来说是相关和有用的。

log4j正逐渐转向XML,因此属性是传统格式。

一些新function只能用XMLconfiguration。 我被迫切换到XMl,因为我需要使用TimeBasedRollingPolicy。

但是,XML非常冗长。 我仍然可以使用属性。

那么,你只能在xmlconfiguration中做的一件事就是设置一个logging器来使用缓冲(使用org.apache.log4j.AsyncAppender)。

但是,如果您需要更多function,您可能还需要查看logback,其中包含对log4j的其他一些改进。

Perf4j( http://perf4j.codehaus.org )是一个非常不错的性能监视系统,它与log4j一起configuration,并且与它一起工作,并且需要log4j.xml文件。
所以,如果你打算使用perf4j(我build议),那么一个XML格式是必需的。