Java log4j警告问题-apache commons

Java log4j警告问题-apache commons,java,log4j,apache-commons,Java,Log4j,Apache Commons,我正在使用ApacheCommons库和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.apac

我正在使用ApacheCommons库和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实例。
有没有办法删除这些警告?

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

此链接可能有用:

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

为根记录器设置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

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

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

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


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

我使用此解决方法解决了我的问题:

//Disable log level
Logger.getRootLogger().setLevel(Level.OFF);
现在我可以在没有警告的情况下读取xml配置文件了。
设置日志级别后:

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

我不想在类路径中插入log4j.properties,因为它位于jar外部和另一个目录中。我想在运行时使用我的应用程序配置文件中指定的路径加载它。好的,有没有办法禁用“org.apache.commons.configuration.ConfigurationUtils”中的日志,或者在我的xml配置中配置我的log4j属性?这不是我在帖子下的评论中建议的解决方案吗?
Logger.getRootLogger().setLevel(Level.INFO);