Spring引导日志.忽略文件,从类路径获取logback-test.xml



当我们将spring boot 2.7应用程序部署到生产环境中时,它在读取正确的日志配置时遇到了问题。它不使用prod配置文件中的配置文件集,而是从类路径中选择与测试相关的资源。

$ java -Dspring.profiles.active=prod service.jar
service.jar!/BOOT-INF/classes!/logback-test.xml]
12:13:29,834 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@23ab930d - URL [jar:file:/home/x/service.jar!/BOOT-INF/classes!/logback-test.xml] is not of type file
12:13:29,865 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set

application-prod.yml

logging:
config: /home/x/service/config/logback-prod.xml

jar在classpath中包含这些文件(log4j不应该在那里,我们删除了这个依赖项,我们依赖于默认的SLF4J):

$ ls log*
log4j2.xml log4j2-prod.xml log4j2-test.xml logback.xml logback-prod.xml logback-test.xml

应用程序正在使用prod配置文件,但logging.config选项除外。为什么?

解决方案是从构建中删除日志配置文件,因为它们总是由Spring读取。

<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>log*xml</exclude>
</excludes>
</resource>
</resources>

最新更新