log4j.properties与log4j.xml

log4j.properties与log4j.xml,log4j,Log4j,我被要求从属性样式配置转换为xml样式。这个过程本身很简单,没有给我带来任何麻烦,我只是好奇为什么有人问我这个问题,我寻找原因。我发现了这篇很好的帖子(已有3年多了,但仍然是我能找到的信息量最大的帖子),它指向的是。他们说 属性可以由属性文件或XML文件定义 Log4j查找名为Log4j.xml的文件,然后查找名为Log4j.properties的文件。两者都必须放在src文件夹中 我检查了它,发现与声明相反,Log4j首先查找属性文件,第二次查找xml。事实上,如果我将两者保留在同一个文件夹中

我被要求从属性样式配置转换为xml样式。这个过程本身很简单,没有给我带来任何麻烦,我只是好奇为什么有人问我这个问题,我寻找原因。我发现了这篇很好的帖子(已有3年多了,但仍然是我能找到的信息量最大的帖子),它指向的是。他们说

属性可以由属性文件或XML文件定义

Log4j查找名为Log4j.xml的文件,然后查找名为Log4j.properties的文件。两者都必须放在src文件夹中


我检查了它,发现与声明相反,Log4j首先查找属性文件,第二次查找xml。事实上,如果我将两者保留在同一个文件夹中,则输出将根据属性文件进行格式化。那么,我是不是误解了这个说法?这完全是错误的吗?当我在log4j1.2.17上时,已经为log4j1.2.14做了声明,log4j团队是否可能更改优先级?我找不到任何相关文档,但这将是一个奇怪的趋势反转,因为xml似乎是配置log4j的首选方式。请看一下JavaDoc。(log4j.properties)的文档指出

PropertyConfiguration不处理高级配置 DOMConfigurator支持的功能,如支持自定义 ErrorHandler、嵌套的附加程序,如AsyncAppender等

因此(log4j.xml)提供了高级选项

除此之外,您还可以使用提供的

如果您不使用高级特性,则无需将属性更改为xml文件

您真正应该考虑的是将log4j更改为甚至 . log4j的开发已经停止,它的创始人(@Ceki)发明了slf4j。

根据,PropertyConfigurator类不处理XML可以支持的高级功能

值得注意的是,更有用的高级选项之一(仅适用于log4j.xml)是使用LevelMatchFilter和DenyAllFilter在特定日志级别或日志级别范围内进行过滤的能力


可以看到一个很好的例子。

谢谢。我已经阅读了您指出的一些文档,我们想要移动,因为我们需要使用AsyncAppender。另一方面,我们也在评估slf4j,但我们会坚持使用log4j(项目非常庞大,到目前为止log4j对我们来说已经足够了)。但sl4j只是一个门面,它不是一个日志框架,所以您不能从log4j更改为sl4j,而是将其添加到上面,sl4j的强大之处在于,只要在需要时更改jar文件,就可以从一个日志框架切换到另一个日志框架。它是一个抽象层,因此,如果您包含使用不同日志框架的不同库或工具,只要它们使用共享您的配置的slf4j,它们就可以共存。