2012-04-03 98 views
6

我正在使用apache commons库和log4j。 我有一个xml配置文件和一个log4j.properties文件。我想在我的xml配置文件中指定我的log4j属性路径。 要载入我的设置我做:log4j警告问题 - apache commons

//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实例。 有什么方法可以删除这些警告?

回答

1

Log4J的输出时,记录器创建了该错误,但没有附加器(一个或多个):

设置附加器和记录器级别的根记录器的实施例。 实际上,在初始化log4j之前创建记录器时会发生此错误。

你说你还没有调用任何log4j对象。但在错误消息中,您看到org.apache.commons.configuration.ConfigurationUtils会创建一个记录器对象(请参见行66)。

你可以在初始化之前将其关闭,请参阅How to turn off log4j warnings?

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

不应该有任何需要,因为初始化通常设置根logger的日志级别再次打开它。

+0

好的,有没有什么办法可以在'org.apache.commons.configuration.ConfigurationUtils'中禁用LOG,或者配置我的xml配置的log4j属性? – PapaSmurf 2012-04-03 13:11:50

0

你至少应该设置附加器,并在加载的log4j的记录水平,为根记录配置文件。否则,您将看到此警告消息。是(是)定义

#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 
0

我解决我的问题有以下解决方法:

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

现在我可以读我的XML配置文件没有警告。
集日志级别后:

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

这不是我在我的帖子下的评论中提出的解决方案吗? – ChrLipp 2012-04-26 14:42:24