忽略依赖的日志模式
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
文件。
我有一个 Spring 启动项目,它依赖于第三方库。这个库使用 SLF4J 和 Log4j2 进行日志记录,并且有一个 log4j2.xml 定义了模式布局。
问题是这个依赖的模式布局被用作我的应用程序的模式,忽略了application.properties中定义的布局。
如果我无法修改此第三方库的源代码,是否可以配置我的应用程序以忽略 log4j2.xml?
您可以尝试的一种解决方案是定义您自己的 log4j2
配置文件并在 log4j.configurationFile
系统 属性 中给出其路径。当您定义自己的 log4j2
配置文件时,您可以控制所需的日志记录量和模式。
这背后的原因是 - 当 Log4j
启动时,它会尝试定位所有 ConfigurationFactory
插件并按从 最高到最低 的加权顺序排列它们.根据 log4j2 Automation Configuration,设置系统 属性 log4j.configurationFile
具有最高权重。
如果 log4j
将使用此系统 属性 找到配置文件,则它不会扫描类路径以查找依赖库中存在的 log4j2.xml
文件。