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

新手上路,请多包涵

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

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

可以通过在类路径中包含适当的库来激活各种日志记录系统,并通过在类路径的根目录中或 在 Spring 环境属性 logging.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.

原文由 Michele Palmia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

Spring 参考文档 中所述,不能在应用程序属性中设置 logging.config 属性,因为它们是在日志记录初始化后读取的。

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

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

原文由 Michele Palmia 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 log4j.configurationFile=path/to/log4j2.xml

或者

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

您也可以通过 --- 的 web.xml context-param 字段提供配置文件位置,如此 所述,但我没有尝试过该选项

(这也适用于 Spring Boot)

原文由 Daud 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题