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

2022-09-01 02:37:33

是否有任何理由使用 XML 而不是属性文件进行 Log4J 配置?


答案 1

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

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

属性文件不如 XML 文件详细。XML 还要求将 log4j.dtd 放在源文件夹中。XML 需要一个 dom4j.jar该 dom4j 可能不包含在较旧的 Java 版本中。

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

此筛选器允许定义[n] 追加器应接收从级别 INFO 到 WARN 的日志消息。这允许跨不同的日志文件拆分日志消息。一个用于调试消息,另一个用于警告,...

属性追加器仅支持最低级别。如果您将其设置为INFO,您还将收到警告,错误和致命消息。


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

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


答案 2

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

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

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


推荐