如何使logback读取名称为变量的属性文件?

时间:2012-06-19 16:52:05

标签: java logging logback

我正在使用http://logback.qos.ch/

我正在使用参数-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>

3 个答案:

答案 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