如何在Java Spring Boot中更改log4j2.xml的默认位置?

2022-09-01 15:12:48

Log4j2 通过根类路径中的配置文件与 Spring Boot 很好地协同工作,正如文档所述。log4j2.xml

但是,当尝试将此文件移动到其他位置时,我无法在启动时将新位置传递给Spring。从文档中

通过在类路径上包含适当的库,可以激活各种日志记录系统,并通过在类路径的根目录中或在Spring Environment属性loging.config指定的位置提供合适的配置文件来进一步自定义。

我尝试使用Java系统属性设置新位置

java -jar -Dlogging.config="classpath:/config/log4j2.xml" target/app.jar

或使用包含相关属性的外部application.properties

logging.config=classpath:/config/log4j2.xml

但是我经常受到以下错误消息的欢迎。

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

答案 1

Spring 参考文档中所述,无法在应用程序属性之间设置该属性,因为在初始化日志记录后会读取这些属性。logging.config

解决方案是按以下方式提供外部日志记录配置的路径:

java -Dlogging.config='/path/to/log4j2.xml' -jar app-current.jar

答案 2

如 log4j2 文档中所述,您可以包含一个在资源文件夹(或类路径中的任何位置)中命名的文件,在该文件中,您可以提供文件位置的名称(或新文件名),如下所示:log4j2.component.properties

log4j.configurationFile=path/to/log4j2.xml

log4j.configurationFile=classpath:log4j2-custom.xml (if the file is on the classpath)

您也可以通过此处提到的字段提供配置文件位置,但我还没有尝试过该选项context-paramweb.xml

(这也适用于Spring Boot)


推荐