【发布时间】:2012-10-21 01:42:49
【问题描述】:
想法是能够在不重新部署的情况下更改 logback 配置。 项目中使用了 Slf4j 和 logback。 logback.xml 文件在耳中,但它从属性文件中读取一些属性,该文件位于耳外。 类似的东西:
<configuration scan="true" scanPeriod="5 seconds">
<property file="${logconfig}"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${logback.consolePattern}</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
问题是扫描检查 logback.xml 是否已更改(并且文件始终相同)。这就是为什么更改属性文件中的值不会更改 logback 的配置。更改仅在重新部署后应用。
那么,在不重新部署的情况下修改 logback 配置的最佳方法是什么?有什么机制可以实现吗?
upd:很少进行更改。但应尽快应用它们。性能也很重要。
【问题讨论】:
-
您不能以编程方式对 logback.xml 文件进行一些虚拟更改,以便重新加载它吗?喜欢在文件末尾添加和删除空行吗?
-
@rolve 我考虑过这样的工作。但我希望必须有更方便的方法来做到这一点。
-
感谢指针@error1009。我使用了您的建议,但在运行
ci.autoConfig();之前使用System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY, myNewLobackXmlFile.getPath())明确提供文件
标签: java properties logback redeploy