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。


分享到:


相關文章: