代码之家  ›  专栏  ›  技术社区  ›  otto.poellath

为什么为log4j配置选择XML而不是属性文件?

  •  42
  • otto.poellath  · 技术社区  · 15 年前

    对于log4j配置,在属性文件上使用XML有什么原因吗?

    4 回复  |  直到 15 年前
        1
  •  39
  •   Rich Seller    15 年前

    有一个有趣的讨论 merits of both in this blog . 以下部分是该博客的引述:

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

    属性文件没有XML文件那么详细。XML还要求将log4j.dtd放在源文件夹中。XML需要一个DOM4J.JAR,它可能不包含在较旧的Java版本中。

    属性文件不支持某些高级配置选项,如筛选器、自定义错误处理程序和特殊类型的附加程序,即AsyncAppender。错误处理程序定义如何处理log4j本身的错误,例如配置错误的附加程序。过滤器更有趣。从可用的过滤器中,我认为对于属性文件,级别范围过滤器确实是缺失的。

    此筛选器允许定义一个[n]附加程序应接收来自级别信息的日志消息以发出警告。这允许跨不同的日志文件分割日志消息。一个用于调试消息,另一个用于警告…

    属性附加器只支持最低级别。如果您设置它的do信息,您将收到警告、错误和致命消息。


    在我的原始答案上发表评论:斜体字是我的重点。出于本教程的目的,作者选择了掩盖或无意中忽略属性或XML只需要位于类路径上,而不需要位于SRC文件夹中。将它们添加到类路径的一个简单方法是将它们添加到SRC文件夹中,因此对于本教程来说,显然已经足够了。

    所有这些都与所问的问题或答案的意图没有直接关系,即讨论使用XML文件配置log4j的优点或其他方面。我认为引用的其余部分与那些希望做出明智选择的人相关并有用。

        2
  •  9
  •   ZZ Coder    15 年前

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

    某些新功能只能在XML中配置。我被迫切换到XML,因为我需要使用TimeBasedAllingPolicy。

    然而,XML是如此冗长。我仍然尽可能使用属性。

        3
  •  3
  •   Steve B.    15 年前

    好吧,在XML配置中只能做一件事,那就是设置一个记录器来使用缓冲(使用org.apache.log4j.asyncAppender)。

    但是,如果您需要更多的功能,您可能还需要查看logback,它包含了许多其他对log4j的改进。

        4
  •  3
  •   Ran    15 年前

    PrP4J http://perf4j.codehaus.org )是一个非常好的性能监控系统,它与log4j一起配置,并与之协同工作,需要log4j.xml文件。
    因此,如果您计划使用Perf4j(我建议),那么需要XML格式。