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

显示警告信息如下:

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配置文件里有些配置是直接从网上粘过来的,导致一些编码方式有问题(尤其是包含中文的时候),把文件删了重建一次 内容重新粘一次  保存的时候注意一下编码对不对;坑爹的问题解决了  -_-|||

你可能感兴趣的:(java,log4j)