以编程方式外部化logback-spring.xml

时间:2017-06-09 13:34:30

标签: java spring spring-boot logback

我的application.properties以编程方式加载 使用PropertyPlaceholderConfigurer。因此,在logging.config中设置application.properties(例如:logging.config=file:/home/dev-01/conf/logback.xml

application.properties中的

将无效,因为日志记录会在生命周期的早期发生,因此无法从application.properties读取值。

我需要外化logback.xml,因为根据环境需要配置属性值。如果我可以外化它,它可以通过支持/操作进行管理而无需开发人员干预。此外,它很容易维护而无需从application.properties重定向。含义我可以在logback.xml文件本身中设置属性值。

我看到了在启动期间添加VM选项的解决方案。我没有尝试过,但我只是想知道我是否可以通过编程方式加载logback.xml(类似于我的application.properties)。

2 个答案:

答案 0 :(得分:2)

我使用这样的配置来实现:

<configuration scan="true" scanPeriod="10 seconds" debug="false">
    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
    <include file="${CONFDIR}/config/logback-config.xml" />
</configuration>

然后在该位置放置另一个logback配置,对该文件的更改将每10秒刷新一次

答案 1 :(得分:0)

以编程方式加载logback.xml似乎不是一个可行的解决方案。我的方案是application.properties以编程方式(从外部路径)加载,因此在logging.config文件中设置application.properties属性将不起作用。注意,它使用类路径中的默认application.properties。我认为最实用的方法是通过-Dlogging.config=/[some-path]/logback.xml。此选项适用于我并更新日志记录级别(用于调试目的),而无需重新部署jar文件。

如果更新了logback.xml,则将logback.xml配置扫描设置为true将刷新设置。

<configuration debug="true" scan="true">
  ...
</configuration>