忽略依赖的日志模式

Ignoring log patterns of dependencies

我有一个 Spring 启动项目,它依赖于第三方库。这个库使用 SLF4J 和 Log4j2 进行日志记录,并且有一个 log4j2.xml 定义了模式布局。

问题是这个依赖的模式布局被用作我的应用程序的模式,忽略了application.properties中定义的布局。

如果我无法修改此第三方库的源代码,是否可以配置我的应用程序以忽略 log4j2.xml?

您可以尝试的一种解决方案是定义您自己的 log4j2 配置文件并在 log4j.configurationFile 系统 属性 中给出其路径。当您定义自己的 log4j2 配置文件时,您可以控制所需的日志记录量和模式。

这背后的原因是 - 当 Log4j 启动时,它会尝试定位所有 ConfigurationFactory 插件并按从 最高到最低 的加权顺序排列它们.根据 log4j2 Automation Configuration,设置系统 属性 log4j.configurationFile 具有最高权重。

如果 log4j 将使用此系统 属性 找到配置文件,则它不会扫描类路径以查找依赖库中存在的 log4j2.xml 文件。