log4j警告问题 - apache commons

时间:2012-04-03 10:32:15

标签: java log4j apache-commons

我正在使用apache commons库和log4j。 我有一个xml配置文件和一个log4j.properties文件。我想在我的xml配置文件中指定我的log4j属性路径。 要加载我的设置,我执行:

//Loading my xml file
this.config = new XMLConfiguration(this.xmlFileName);  

此时会出现以下警告:

log4j:WARN No appenders could be found for logger (org.apache.commons.configuration.ConfigurationUtils).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

但是我还没有调用任何log4j对象。一旦我读完了xml文件,我就可以成功使用我的log4j实例了。 有没有办法删除这些警告?

4 个答案:

答案 0 :(得分:4)

检查log4j.properties文件是否在类路径中

此链接可能有用: http://www.coderanch.com/t/63230/open-source/log-log-WARN-No-appenders

答案 1 :(得分:1)

Log4J在创建记录器时输出此错误,但未定义任何appender。 实际上,在初始化log4j之前创建记录器时会发生此错误。

你说你没有调用任何log4j对象。但是在错误消息中,您看到org.apache.commons.configuration.ConfigurationUtils创建了一个记录器对象(请参阅第{3}行)。

您可以在初始化之前将其关闭,请参阅66

Logger.getRootLogger().setLevel(Level.OFF);

由于初始化通常设置根记录器的日志级别,因此不需要再次打开它。

答案 2 :(得分:0)

您至少应该在加载的log4j配置文件中为根记录器设置appender和logger级别。否则,您将看到此警告消息。

为根记录器设置appender和logger级别的示例:

#Set root logger 's level and its appender to an appender called CONSOLE which is defined below.
log4j.rootLogger=DEBUG, CONSOLE

#Set the behavior of the CONSOLE appender 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

答案 3 :(得分:0)

我通过此解决方法解决了我的问题:

//Disable log level
Logger.getRootLogger().setLevel(Level.OFF);

现在我可以在没有警告的情况下阅读我的xml配置文件 设置日志级别后:

Logger.getRootLogger().setLevel(Level.INFO);