Spring 引导 + 登录 - 外部配置与本地配置



我有一个带有本地 application.properties 文件的 Spring Boot 应用程序,其中包含:

logging.config=src/main/resources/local/logback-dev.xml

在这个logback-dev.xml文件中,有一个带有本地路径的文件追加器(比如/local/path/log/(

当部署到不同的环境(比如PROD(时,部署的人使用他自己的application.properties文件作为外部化配置(--spring.config.location=...(,其中包括:

logging.config=/prod/path/logback-prod.xml

在该 logback-prod.xml 文件中,有一个具有不同路径的文件追加器(例如/prod/path/log/(

运行应用程序时,会出现错误,因为似乎两个文件都被利用了:我们进入/prod/path/log/消息中存在的日志,例如">找不到路径/local/path/log/">

有人可以解释一下这里发生了什么吗?我以为外部化的配置会覆盖本地配置,但这里有些奇怪。

我们遇到了同样的问题,并在此文档的帮助下找到了解决方案:外部配置https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config应用程序属性https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config-application-property-files

在Pom中,我们添加了:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/application.properties</exclude>
<exclude>**/application-development.properties</exclude>
<exclude>**/application-production.properties</exclude>
<exclude>**/logback.xml</exclude>
</excludes>
</configuration>
</plugin>

希望这将解决您的问题并有助于理解。

据我所知,将logging.config放在您的application.properties或命令行中作为应用程序选项(--logging.config(没有任何效果。看起来这些属性的处理是在日志记录初始化之后进行的,因此其中定义的任何属性都会太晚添加到环境中。

这让你想知道为什么他们甚至拥有logging.config属性。我需要深入研究一下:-(

什么工作: 通过设置 system 属性logback.configurationFile来使用本机 Logback 方法来指定配置文件,例如,通过在-jarmainclass参数之前在java命令行上传递-Dlogback.configurationFile。您可以在此处传递不同的文件名,具体取决于您运行的环境(开发、生产(。如果你省略它,Spring 最终会在你的类路径上找到logback.xml(来自源代码中的src/main/resources(,这听起来像你想要的默认值。

最新更新