log4j配置日志不显示问题排查方法

当遇到log4j警告信息"No appenders could be found for logger"时,通常是由于配置文件未被正确加载。确保在web.xml中,log4j配置位于ContextLoaderListener之前,并检查log4j.properties文件路径和内容是否正确。如果编码问题导致日志不显示,尝试删除并重新创建配置文件,确保编码格式正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

显示警告信息如下:

log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.


原因是是在加载org.springframework.web.context.ContextLoader这个listener的时候没找到log4j的配置文件造成的。 

1.先去查看web.xml的配置:

web工程启动的时候会按照xml的书写顺序地去加载各项配置,先保证log4j的相关配置放在ContextLoaderListener的前面:

<!--Log4j -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>6000</param-value>
</context-param>
<!-- 上下文参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!--org.springframework.web.context.ContextLoaderListener -->
<listener>
<display-name>context</display-name>
<listener-class>com.mycompty.framework.listener.ContextListener</listener-class>
</listener>

2.如果上面顺序没错的的话,再查看log4j.properties文件的配置有没有错

我把log4j.properties放在了WEB-INF下,内容大致如下

log4j.rootLogger=info, stdout, D
log4j.logger.com=info
#log4j.logger.org.springframework.web.servlet.UmessageDispatcher=ERROR
#console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %5p %c{1}:%L -> %m%n
##error file
log4j.logger.D=error
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %5p %c{1}:%L -> %m%n
log4j.appender.D.datePattern='.'yyyy-MM-dd
log4j.appender.D.Threshold = ERROR 
log4j.appender.D.append=true
log4j.appender.D.File=/data/logs/project_logs/error.log
##daily file
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=/data/logs/project_logs/project.log 
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %5p %c{1}:%L -> %m%n

3.以上都没错误的话日志应该就能出来了,但是我的还是显示警告信息没有日志,最后发现是properties配置文件里有些配置是直接从网上粘过来的,导致一些编码方式有问题(尤其是包含中文的时候),把文件删了重建一次 内容重新粘一次  保存的时候注意一下编码对不对;坑爹的问题解决了  -_-|||

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值