java - 有没有办法在 Tomcat 上外部化 Spring [Boot] 应用程序的 log4j2 配置?

标签 java spring tomcat spring-boot log4j2

我们的 Spring Boot 应用程序使用 log4j2 进行日志记录,但我们要部署它的服务器管理员要求:

  1. 日志记录在其端是完全可配置的,即,必须有一个 log4j2.xml 文件,他们可以编辑该文件以调整日志记录格式、文件、级别等,并且

  2. 当部署新版本的应用程序时(上传 war -> 停止 tomcat -> 删除 webapp 文件夹 -> 启动 Tomcat)过程将不能丢失或覆盖配置实现自动化。

理想情况下,log4j2.xml 的路径应该在 webapps 上下文 .xml 文件中设置——因为这是数据库连接配置所在的位置。但我似乎无法找到一种方法来完成这项工作。所有搜索结果都谈论使用 META-INF/web.xmlapplication.properties 文件(不是一个选项,因为它们在部署时被覆盖),以及唯一的 SO 问题我发现 ( Spring application without web.xml log4j configuration ) 在启动时对我不起作用(“未提供配置”)异常。

最佳答案

将环境变量 logging.config 设置为 log4j2.xml 文件的位置。

也建议大家取名为log4j2-spring.xml

参见 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

“自定义日志配置”部分

关于java - 有没有办法在 Tomcat 上外部化 Spring [Boot] 应用程序的 log4j2 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302635/

相关文章:

spring - 捕获 Spring 上下文关闭错误

spring 3 mvc多个应用程序上下文实例

tomcat - 从 Intellij Idea 热部署 Liferay Maven portlet 到捆绑的 Liferay Tomcat

tomcat - 配置 Tomcat 以检查 CRL 分发点

web-services - Wso2 文件上传。连接重置

java - 将 "logic"移出数据访问层会导致大量数据库连接

java - Bukkit 倒数计时器在 Activity 结束后发生

java - 如何检查 URL 是否包含/预览或子域是 CI?

spring - 如何向Spring提交错误报告?

java - 如何将数组列表中的特定值添加到 HashMap 中?