log4j找不到根日志记录器信息。这样可以吗?

7

我正在使用以下方式加载配置文件:

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文件放在WebApp/WEB-INF/classes目录下

以下是MyLog4j.xml的内容:

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

我在stackoverflow(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

你有吗:<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >? - Arya
是的 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
- Abhishek kumar
1个回答

10
问题在于您正在使用PropertyConfigurator来配置MyLog4j.xml文件。对于XML文件,您需要使用DOMConfigurator
DOMConfigurator.configure(url);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接