spring - 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}'
解决方案
您应该${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 文档。
推荐阅读
- conv-neural-network - 将具有圆形 FOV 的图像输入 CNN
- animation - 如何在展开动画中创建显示动画?
- spring - UTF-8 中的 Spring WebClient 特殊字符请求
- assembly - 为什么 IMUL 的 32 位立即数会在 NASM 中给出警告而在 GCC 中给出错误?
- samsung-mobile - 日志意外出现
- node.js - ssl 与 post 请求的通信问题
- github - 使用 GitHub Desktop 修改提交
- javascript - How do I require an input into a textbox only if a certain checkbox is selected
- php - 在 WooCommerce 结帐页面上运行特定的过滤器或功能
- python-3.x - tkinter:我如何使滚动条对框架的新大小做出反应