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



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

application.properties中不起作用,因为日志记录发生在生命周期的早期,因此无法从application.properties读取值。

我需要外部化logback.xml因为需要根据环境配置属性值。如果我可以将其外部化,则可以由支持/操作进行管理,而无需开发人员干预。此外,无需从application.properties重定向即可轻松维护。这意味着我可以在logback.xml文件本身中设置属性值。

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

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

<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 秒刷新一次

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

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

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

最新更新