我正在使用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实例了。 有没有办法删除这些警告?
答案 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);