【发布时间】:2015-02-28 09:28:05
【问题描述】:
我正在使用spring-boot 在tomcat 上运行一个网络应用程序。
如何动态更改log4j2.xml 日志记录路径? (例如通过 jvm args、属性文件或其他)?
到目前为止,我将日志xml配置如下:
<Configuration>
<Properties>
<property name="path">${bundle:application:log.path}</property>
</Properties>
</Configuration>
带配置文件:
#application.properties:
log.path=d:/
现在我想动态地将日志路径强制为例如d:/log-test,但不必修改我的war 文件。因为在重新部署时我会丢失任何手动配置。
那么我怎样才能提供不同的日志记录路径呢?
我想在同一台机器上运行多个配置文件,所以这里的环境或系统属性对我没有用处。
【问题讨论】:
-
部署中的war文件应该被取消jar,然后你应该能够直接修改你的属性文件。您只需要重新启动应用程序,以便 log4j 再次读取属性文件。
-
@RaviThapliyal 这正是我想要阻止的,因为在部署新版本时,我每次都必须明确修改war文件。不是说同事可能会错过重要的一步......
-
日志路径很少是绝对的,也不是每次部署都会改变它。最终路径显然会提交到您的存储库并反映在最终构建中。如果您仍然觉得需要覆盖它,那么将值外部化到属性文件有什么用?在构建后进行,我认为有点违背了它的目的。
标签: java spring log4j spring-boot log4j2