如何更改 tomcat 上的 log4j2 日志记录路径?

How to change log4j2 logging path on tomcat?

我正在 运行使用 spring-boottomcat 上使用网络应用程序。

如何动态更改 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 文件。因为在重新部署时我会丢失任何手动配置。

那么我怎样才能提供不同的日志记录路径呢?

我想 运行 同一台机器上的多个配置文件,因此环境或系统属性在这里对我没有用。

您可以通过提到的多种方式进行操作here

如果你想通过环境变量,那么你可以这样做:

${env:MY_LOG_PATH}

如果系统属性则:

${sys:MY_LOG_PATH}

正如已经建议的那样,使用 ${sys:LOG_PATH} 可能是最好的解决方案。您不必修改 war,但您必须 运行 一个用于开发的 tomcat 和一个单独的 tomcat 用于测试。然后只需放置 set CATALINA_OPTS 以在 setenv.sh 或 setenv.bat 中包含 -DLOG_PATH=/my/log/path 拥有一个真的没有多大意义tomcat 运行无论如何都要。