Spring Boot(Log4j2)项目IntelliJ可生成日志 本地Tomcat部署无日志问题排查
Spring Boot集成Log4j2打war部署到Tomcat无日志生成排查
问题现象
- 项目为基础Spring Boot应用,通过Log4j2实现日志记录能力
- 在IntelliJ IDEA中直接运行应用时,可按照配置的指定路径正常生成日志文件
- 项目打包为war格式部署到本地Tomcat服务器后,全程无日志文件生成
排查过程
当前项目的Log4j2配置逻辑与以下示例一致:设置固定本地路径为日志输出目录,通过RollingFile appender将项目包下的info级别日志写入文件;Root日志节点仅绑定控制台输出appender
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn"> <Properties> <Property name="log.dir">C:\\users\myname\Desktop</Property> <Property name="app.name">myapp</Property> </Properties> <Appenders> <RollingFile name="fileLogger" fileName="${log.dir}/app-info.log" filePattern="${log.dir}/app-info-%d{yyyy-MM-dd}.log"> <PatternLayout> <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingFile> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" /> </Console> </Appenders> <Loggers> <Logger name="com.myapp.mypackage" level="info" additivity="true"> <appender-ref ref="fileLogger" level="info" /> </Logger> <Root level="debug" additivity="false"> <appender-ref ref="console" /> </Root> </Loggers> </Configuration>
- 尝试两种格式配置日志输出路径:双反斜杠格式
C:\\users\myname\Desktop、正斜杠格式C:/users/myname/Desktop,两种格式在IDEA运行场景下均可正常生成日志,但部署到Tomcat后仍无日志产出 - 相同路径配置在其他开发人员的Tomcat环境下可正常生成桌面日志,但对方无法说明做过特殊配置调整
- 主动将日志目录参数设置为无意义的错误值,部署到Tomcat后应用运行无任何报错,初步判断Tomcat运行时未加载到项目内置的Log4j2配置文件
问题定位结论
经过Tomcat版本、环境变量多轮对照测试,确认问题触发条件与CATALINA_HOME环境变量、Tomcat版本强相关:
- 共测试三个Tomcat版本:8.5、9.0.30、9.0.37
- Tomcat 9.0.30必须设置CATALINA_HOME环境变量才能启动,但设置该变量后会出现日志不生成的问题
- 卸载9.0.30后切换为Tomcat 8.5,将CATALINA_HOME变量指向8.5安装目录,问题仍复现
- 最终卸载9.0.30后切换为Tomcat 9.0.37,清空所有系统级别的CATALINA_HOME环境变量后,Log4j2日志可正常按配置生成
内容的提问来源于stack exchange,提问作者davedabull
相关产品推荐
相关产品推荐

