我正在使用参数-Dproperties.url=myappproperties-production.properties
或-Dproperties.url=myappproperties-development.properties
运行我的java进程,具体取决于运行它的环境。
问题:如何让logback选择我的属性文件?
如果属性文件名是静态的,我会这样做(正常工作):
<configuration>
<property resource="myappproperties-development.properties" />
(...)
</configuration>
但我需要一些动态的东西(这不起作用):
<configuration>
<property resource="${properties.url}" />
(...)
</configuration>
答案 0 :(得分:4)
资源文件的值可以是属性本身。换句话说,
<configuration debug="true">
<property resource="${properties.url}" />
(...)
</configuration>
应该有效。 BYW,将debug
元素的<configuration>
属性设置为true
,以在控制台上查看logback的内部消息。您使用的是哪个版本的logback?
答案 1 :(得分:0)
如果属性url值在引号中,你将如何处理? e.g。
-Dproperties.url="myappproperties-production.properties"
我刚刚尝试了这个并且它没有工作
我问的原因是因为Amazon Elastic Beanstalk中最新版本的Amazon AMI在属性值周围添加了引号 - 即使用户没有指定此
答案 2 :(得分:0)
这是Spring推荐的方式:
<configuration>
<springProfile name="local">
<!-- configuration to be enabled when the "local" profile is active -->
<property resource="application-local.properties" />
</springProfile>
<springProfile name="dev">
<!-- configuration to be enabled when the "dev" profile is active -->
<property resource="application-dev.properties" />
</springProfile>
</configuration>
参考文档:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html