如何在Spring 5.3.7+Log4j 1.2.7+Tomcat 9环境下记录Spring框架日志至log.out文件
如何让Spring框架日志输出到Log4j配置的log.out文件?
先梳理下你的环境背景:
- Spring 5.3.7
- Log4j 1.2.7
- 非Maven构建,部署在Tomcat 9服务器
- 已通过
log4j.properties将自定义日志输出到log.out,现在需要把Spring的Bean初始化、异常等框架日志也同步输出到这个文件
问题根源
Spring框架默认用**Jakarta Commons Logging (JCL)**做日志门面,而Log4j 1.2是JCL的兼容实现。你当前的配置只处理了rootLogger和自定义日志,但没明确配置Spring相关包的日志路由,导致Spring的日志没被引导到你的FILE appender里。
解决方案:修改log4j.properties
在你现有配置基础上,添加针对Spring核心包的Logger配置即可。
你的原始配置:
log4j.rootLogger = DEBUG, FILE log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE.File=${catalina.home}\\mylogs\\log.out log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.Threshold=debug log4j.appender.FILE.Append=true log4j.appender.FILE.MaxFileSize=5MB log4j.appender.FILE.MaxBackupIndex=5 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
修改后的配置(新增Spring日志路由):
log4j.rootLogger = DEBUG, FILE log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE.File=${catalina.home}\\mylogs\\log.out log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.Threshold=debug log4j.appender.FILE.Append=true log4j.appender.FILE.MaxFileSize=5MB log4j.appender.FILE.MaxBackupIndex=5 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n # 配置Spring框架日志输出到FILE appender log4j.logger.org.springframework = DEBUG, FILE # 关闭日志追加性,避免Spring日志重复输出到rootLogger的其他appender log4j.additivity.org.springframework = false
配置说明
log4j.logger.org.springframework = DEBUG, FILE:指定Spring核心包下的所有日志以DEBUG级别输出到你定义的FILEappender,这样Bean初始化、上下文加载、异常等日志都会被捕获。log4j.additivity.org.springframework = false:默认日志会同时输出到当前Logger和父Logger(这里是rootLogger),设置为false可以避免Spring日志被重复输出(因为rootLogger已经关联了FILEappender)。
可选优化
如果你不需要Spring所有模块的日志,只想聚焦Bean相关内容,可以把配置更精确:
# 只输出Spring Bean模块的日志 log4j.logger.org.springframework.beans = DEBUG, FILE log4j.additivity.org.springframework.beans = false
额外检查
确保你的WEB-INF/lib目录下存在以下两个jar包(非Maven构建需手动添加):
log4j-1.2.7.jarcommons-logging.jar(Spring 5.x依赖JCL,需要它桥接Log4j)
重启Tomcat后,你就能在log.out里看到Spring框架生成的各类日志了。
内容的提问来源于stack exchange,提问作者Bebetto Francis
相关产品推荐
相关产品推荐

