log4j警告:无法为logger找到appenders

运行基于Maven的Spring Boot项目,应用输出log4j 警告信息,如下所示:

log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

File exists.


错误解读

如果找不到默认配置文件log4j.properties和log4j.xml,并且应用程序不执行显式配置,就会发生这种情况。log4j使用Thread.getContextClassLoader().getResource()定位默认配置文件,而不直接检查文件系统。要知道放置log4j.properties或log4j.xml的适当位置,就需要了解使用中的类加载器的搜索策略。log4j不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。


虽然不影响使用,但是有警告信息,还是可以考虑解决的。简单而言,是因为没有配置log4j配置文件引起的。


方案1:添加log4j.properties 配置文件

需要把log4j.properties 文件放置到项目中的resources 目录下,如下所示:

log4j警告:无法为logger找到appenders


如下是一个参考的配置文件,将应用输出信息写到控制台。

log4j.rootLogger=INFO, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n


下面的配置,则是将应用输出信息写入到文件:

log4j.appender.FILE = org.apache.log4j.FileAppender

log4j.appender.FILE.File = file.log

log4j.appender.FILE.Append = false

log4j.appender.FILE.layout = org.apache.log4j.PatternLayout

log4j.appender.FILE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n


现在再次运行spring boot应用,就正常了。


方案2:自动快速地使用缺省Log4j环境

将下面方法插入到入口点main方法处,是一个快速的系统配置,自动快速地使用缺省Log4j环境。

//自动快速地使用缺省Log4j环境。

BasicConfigurator.configure();

log4j警告:无法为logger找到appenders

给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG。


分享到:


相關文章: