运行基于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.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();
给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG。
閱讀更多 軟件架構 的文章