为什么选择XML over属性文件进行Log4J配置?

ott*_*ath 41 java xml logging log4j

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

Ric*_*ler 40

关于这两个博客优点,有一个有趣的讨论.以下部分是该博客的引用:

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

属性文件比XML文件简洁.XML要求log4j.dtd也放在源文件夹中.XML需要dom4j.jar,它可能不包含在较旧的Java版本中.

属性文件不支持某些高级配置选项,如过滤器,自定义ErrorHandler和特殊类型的appender,即AsyncAppender.ErrorHandlers定义了如何处理log4j本身的错误,例如配置错误的appender.过滤器更有趣.从可用的过滤器,我认为属性文件实际上缺少级别范围过滤器.

此过滤器允许定义[n] appender应接收从Level INFO到WARN的日志消息.这允许跨不同的日志文件分割日志消息.一个用于DEBUGGING消息,另一个用于警告,......

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


解决我原来答案的评论:斜体是我的重点.出于本教程的目的,作者选择掩盖或无意中省略了属性或xml只需要在类路径上,而不是需要在src文件夹中.将它们添加到类路径的一种简单方法是将它们添加到src文件夹中,因此出于本教程的目的,这显然是足够的.

这些都与提出的问题或答案的意图没有直接关系,这是讨论使用xml文件配置log4j的优点或其他方面.我认为引用的其余部分对于那些希望做出明智选择的人来说是相关且有用的.

  • 以上信息不正确.正如志宏所说,log4j.xml或log4j.properties文件只需要放在类路径中.另外,log4j.dtd包含在log4j.jar文件中(至少是最后几个版本); 所以你不必担心将它包含在你的应用程序中 (3认同)
  • 这些不是我的话,这是博客的一句话.阅读上下文的参考 (2认同)

ZZ *_*der 9

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

某些新功能只能以XML格式配置.我被迫切换到XMl,因为我需要使用TimeBasedRollingPolicy.

但是,XML非常冗长.我还是尽可能地使用属性.