外部加载 application.properties 时 Spring Boot Logging 级别无效

Posted

技术标签:

【中文标题】外部加载 application.properties 时 Spring Boot Logging 级别无效【英文标题】:Spring Boot Logging level has no effect when application.properties is loaded externally 【发布时间】:2016-09-30 14:04:51 【问题描述】:

我正在使用 tomcat 运行一个 Spring Boot 应用程序。

当通过类路径加载 application.properties 时,我的日志记录级别设置正确。

当 application.properties 使用以下 java 配置从外部加载时:

@PropertySource(value="file:/some/path/application.properties")

"something" 覆盖 logging.level.* 语句,并且似乎将默认值设置为 INFO 级别。

可能出了什么问题?

【问题讨论】:

您自己加载文件的事实。这绕过了 application.properties 的特定 Spring Boot 加载。不要使用@PropertySource 加载它。指定 spring.config.location 而不是自己加载。 我正在使用个人资料,这就是为什么...我正在尝试这种方式 我的其他属性加载成功,令人失望 只需使用application-[profile].yml 文件来分隔配置文件(即开即用支持)。 是的,如果文件在类路径中。在这种情况下,我的配置就像你说的那样开箱即用。但我正在将我的文件作为外部资源加载 【参考方案1】:

不要使用 @PropertySource 并期望自定义 Spring Boot 加载规则仍然有效,而是让 Spring Boot 处理它。

Spring Boot 已经支持loading profile specific property files。通过default 它检查类路径和当前目录。但是,这可以通过指定 spring.config.location 属性轻松扩展/更改。只需将您的自定义目录放在那里。

java -jar your-app.jar --spring.config.location=file:/some/path/

注意:将其设置为环境或 JNDI 也可以。

现在还将根据相同的加载规则检查此目录的属性/yml 文件(即application.propertiesapplication-profile.properties,当然还有 YAML 文件)。

【讨论】:

非常清楚,谢谢。我现在在整个环境中都有类似的行为。

以上是关于外部加载 application.properties 时 Spring Boot Logging 级别无效的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud 项目搭建:服务消费方搭建

springboot第三天---SpringBoot属性配置

Kotlin 和 Spring Boot 数据资源异常

无法使用 Spring Boot + GORM + Gradle 设置 NamingStrategy

as3 从网络外部加载 swf 以控制从网络外部加载的 swf

阻止杰克逊改变变量名的大小写