首页 > 解决方案 > log4j2.properties 未正确读取 VMargument 值

问题描述

在 windows 和 linux 服务器上运行的 tomcat 8 中实现的带有 log4j2 的 Spring Web 应用程序。在 setenv.bat 文件中指定的 windows 服务器 CATALINA_OPTS

set "CATALINA_OPTS=-DLOG_FOLDER=D:\apache-tomcat-9.0.22\customlog"

log4j2.properties 文件位于 WEB-INF\classes\config\

appender.rolling.fileName=${sys:LOG_FOLDER}\logger.log
appender.rolling.filePattern=${sys:LOG_FOLDER}\logging-%d{MM-dd-yyyy}-%i.log.gz

在 setenv.sh 文件中指定的 linux 服务器 CATALINA_OPTS

set "CATALINA_OPTS=-DLOG_FOLDER=/opt/tomcat01/customlog"

log4j2.properties 文件位于 WEB-INF\classes\config\

appender.rolling.fileName=${env:LOG_FOLDER}/logger.log
appender.rolling.filePattern=${env:LOG_FOLDER}/logging-%d{MM-dd-yyyy}-%i.log.gz

日志文件夹总是像 '${env:LOG_FOLDER}' 或 '${sys:LOG_FOLDER}'

标签: springtomcatlog4j2

解决方案


您应该${sys:LOG_FOLDER}在这两种情况下使用:

  • ${sys:property_name}检索该名称的 Java 系统属性,
  • ${env:variable_name}检索该名称的操作系统环境变量。

有关更多详细信息,请参阅Log4j 2 查找

您的配置中还有其他问题:

  • 如果您在 Windows 上将 Tomcat 作为服务启动,setenv.bat则不使用。您应该添加-DLOG_FOLDER=D:\apache-tomcat-9.0.22\customlog到 Tomcat Monitor 应用程序的 Java 选项卡 ( bin\tomcat<version>w.exe)。
  • 在 Linux 上,您使用错误的语法来修改环境变量(Microsoft 的语法),请使用:
export CATALINA_OPTS="-DLOG_FOLDER=/opt/tomcat01/customlog"

反而。

备注:如果要使用环境变量而不是系统属性,可以使用:

export LOG_FOLDER="/opt/tomcat01/customlog"

在 Linux 上,而在 Windows 上,您需要运行:

tomcat10.exe //US ++Environment="LOG_FOLDER=D:\apache-tomcat-9.0.22\customlog"

有关更多详细信息,请参阅Procrun 文档


推荐阅读