You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Log4j内部日志输出至文件?配置问题求助

解决Log4j内部日志无法写入文件的问题

我明白你的困扰——开启log4j.debug=true后,控制台能看到Log4j的内部调试日志,但这些日志没法写入已配置的文件appender里。这是因为log4j.debug=true触发的是Log4j自身(org.apache.log4j包下)的调试日志,而你的现有配置只给root logger关联了appender,并没有单独指定Log4j内部日志的输出目标。

具体解决步骤

你需要显式为org.apache.log4j这个Logger配置日志级别和关联的appender,这样它的内部日志就能被写入指定文件了。以下是修改后的完整配置,我会标注新增的关键部分:

#log4j.category.org.hibernate=INFO, hibernate
log4j.category.org.hibernate.SQL=ERROR, hibernate
#log4j.category.org.hibernate.type=ALL, hibernate
log4j.additivity.org.hibernate.SQL=false

#Root logger setting
log4j.rootLogger=DEBUG, console, rollingFile, test

# 新增:配置Log4j内部日志的输出,将其关联到你想要的appender(比如test或rollingFile)
log4j.category.org.apache.log4j=DEBUG, test
# 关闭additivity,避免内部日志重复输出到root的appender里(如果不需要重复的话)
log4j.additivity.org.apache.log4j=false

#Appenders configurations.
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} %5p [%t] (%F:%L) - %m%n

log4j.appender.rollingFile=eu.unicorn.pcr.broker.logging.CustodianDailyRollingFileAppender
log4j.appender.rollingFile.File=${catalina.home}/logs/pcr-app.log
log4j.appender.rollingFile.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.rollingFile.MaxNumberOfDays=10
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.conversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} %5p [%t] (%F:%L) - %m%n

#apender for stress request logging
log4j.appender.stressTest=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stressTest.File=${catalina.home}/logs/requests.log
log4j.appender.stressTest.MaxBackupIndex=10
log4j.appender.stressTest.layout = org.apache.log4j.PatternLayout
log4j.appender.stressTest.layout.conversionPattern=%d{HH:mm:ss.SSS} [%t] - %m%n
log4j.category.stressTestLogger=TRACE, stressTest
log4j.additivty.stressTestLogger=false

log4j.appender.hibernate=org.apache.log4j.RollingFileAppender
log4j.appender.hibernate.File=${catalina.home}/logs/hibernate.log
log4j.appender.hibernate.MaxFileSize=20MB
log4j.appender.hibernate.MaxBackupIndex=10
log4j.appender.hibernate.layout = org.apache.log4j.PatternLayout
log4j.appender.hibernate.layout.conversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} [%t] (%F:%L) - %m%n

# Define the test file appender
log4j.appender.test=org.apache.log4j.FileAppender
log4j.appender.test.File=${catalina.home}/logs/test.log
log4j.appender.test.ImmediateFlush=true
log4j.appender.test.Threshold=debug
log4j.appender.test.Append=false
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.conversionPattern=%m%n

log4j.debug=true

关键说明

  • log4j.category.org.apache.log4j=DEBUG, test:指定Log4j内部包的日志级别为DEBUG,并将日志输出到test这个appender(你也可以换成rollingFile或者其他自定义appender)。
  • log4j.additivity.org.apache.log4j=false:关闭日志的传递性,这样Log4j内部日志不会再重复输出到root logger关联的appender中(如果希望同时在控制台和文件都看到,可以去掉这行)。

修改完配置后重启应用,Log4j的内部调试日志就会正常写入test.log(或者你指定的其他文件)了。

内容的提问来源于stack exchange,提问作者Jack Ouk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:47:42