外部加载 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.properties
和application-profile.properties
,当然还有 YAML 文件)。
【讨论】:
非常清楚,谢谢。我现在在整个环境中都有类似的行为。以上是关于外部加载 application.properties 时 Spring Boot Logging 级别无效的主要内容,如果未能解决你的问题,请参考以下文章
springboot第三天---SpringBoot属性配置
无法使用 Spring Boot + GORM + Gradle 设置 NamingStrategy