2013-10-28 106 views
5

我加载使用log4j无法找到根记录器信息。这是正确的

java.net.URL url=Thread.currentThread().getContextClassLoader().getResource("MyLog4j.xml"); 
url=Thread.currentThread().getContextClassLoader().getResource("MyLog4j.xml"); 
PropertyConfigurator.configure(url); 

当运行这个程序,在其给这个错误log4j的调试配置文件。

log4j: Reading configuration from URL file:/F:/TestApp/WEB-INF/classes/MyLog4j.xml 
log4j: Could not find root logger information. Is this OK? 
log4j: Finished configuring. 
log4j:WARN No appenders could be found for logger (MyServlet). 
log4j:WARN Please initialize the log4j system properly. 

我已经把MyLog4j.xml在Web应用程序/ WEB-INF/classes中

这是

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
     <appender name="appender" class="org.apache.log4j.DailyRollingFileAppender"> 
      <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <param name="File" value="F:/MyLogs/MyAppLogs.log"/> 
     <param name="Append" value="true"/> 
      <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %p - %m%n"/> 
     </layout> 
    </appender> 
    <root> 
     <priority value ="debug"/> 
     <appender-ref ref="appender"/> 
    </root> 
</log4j:configuration> 

找遍了很多问题,关于这个话题的我MyLog4j.xml内容在SO上,并没有得到它的工作。有人可以帮我吗?

编辑 如果我更改代码来配置使用属性文件,那么它的工作正常。 性文件的内容

# This sets the global logging level and specifies the appenders 
log4j.rootLogger=INFO, myConsoleAppender 

# settings for the console appender 
log4j.appender.myConsoleAppender=org.apache.log4j.ConsoleAppender 
log4j.appender.myConsoleAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.myConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 
+0

你有:<!DOCTYPE log4j:configuration SYSTEM“log4j.dtd”>? – united

+0

是<?xml version =“1.0”encoding =“UTF-8”?> <!DOCTYPE log4j:configuration SYSTEM“log4j.dtd”> –

回答

7

刚刚找到了解决这一块,我想我会在这里分享答案,因为这个问题仍然没有答案。

问题是您正在使用PropertyConfigurator来配置MyLog4j.xml文件。对于XML文件,您需要使用DOMConfigurator

DOMConfigurator.configure(url); 
相关问题