我的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
)。
答案 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>