如何为Log4j的Console Appender设置阈值?解决配置日志警告问题
问题解决方法
核心原因
你的log4j.rootLogger配置缺少日志级别指定,Log4j无法识别有效配置因此抛出警告;若直接将rootLogger设为INFO级别,会全局过滤掉DEBUG级日志,导致DEBUG日志文件无法收集到对应内容。
修正后的配置
将rootLogger的级别设置为DEBUG,配合各Appender的Threshold参数分别控制不同输出渠道的日志级别:
# 指定rootLogger级别为DEBUG,关联三个输出端 log4j.rootLogger=DEBUG, consoleAppenderInfo, fileAppenderInfo, fileAppenderDebug # 控制台(catalina.out)仅输出INFO及以上级别日志 log4j.appender.consoleAppenderInfo=org.apache.log4j.ConsoleAppender log4j.appender.consoleAppenderInfo.Threshold=INFO log4j.appender.consoleAppenderInfo.layout=org.apache.log4j.PatternLayout log4j.appender.consoleAppenderInfo.layout.ConversionPattern=[%t] %-5p %c %x - %m%n # INFO日志文件仅输出INFO及以上级别日志 log4j.appender.fileAppenderInfo=org.apache.log4j.RollingFileAppender log4j.appender.fileAppenderInfo.Threshold=INFO log4j.appender.fileAppenderInfo.File=/home/user/logs/info.app.log log4j.appender.fileAppenderInfo.layout=org.apache.log4j.PatternLayout log4j.appender.fileAppenderInfo.layout.ConversionPattern=[%t] %-5p %c %x - %m%n # DEBUG日志文件输出DEBUG及以上级别日志 log4j.appender.fileAppenderDebug=org.apache.log4j.RollingFileAppender log4j.appender.fileAppenderDebug.Threshold=DEBUG log4j.appender.fileAppenderDebug.File=/home/user/logs/debug.app.log log4j.appender.fileAppenderDebug.layout=org.apache.log4j.PatternLayout log4j.appender.fileAppenderDebug.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
原理说明
- rootLogger的级别是全局过滤门槛,设为DEBUG后,所有DEBUG及以上级别的日志都会进入Appender处理流程;
- 每个Appender的
Threshold是二次过滤规则:控制台和INFO日志文件只保留INFO及以上级别,DEBUG日志文件保留所有DEBUG及以上级别; - 明确指定rootLogger级别后,Log4j能识别有效配置,不会再抛出警告。
内容的提问来源于stack exchange,提问作者Andika Eka
相关产品推荐
相关产品推荐

