2013-06-04 81 views
2

我浪費了很多時間來解決此問題。但不能。可能很簡單。log4j:錯誤無法解析文件

應用程序的jar文件不能加載log4j.xml文件,它是log4j的配置文件。
這裏是我使用

import org.apache.log4j.xml.DOMConfigurator; 
public class LoggerConfig { 
    public void configLogger() 
    { 
     DOMConfigurator.configure("log4j.xml"); 
    } 
} 

它的一個Maven項目的代碼。和我的DIR strucure是:

src 
    main 
    java 
    | com 
    | | my 
    | | | abc 
    | | | | test 
    | | | | | LoggerConfig.java 
    resource 
    | com 
    | | my 
    | | | abc 
    | | | | test 
    | | | | | log4j.xml 

我的類路徑文件看起來像:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" output="target/classes" path="src/main/java"/> 
    <classpathentry kind="src" output="target/classes" path="src/main/resources"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> 
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> 
    <classpathentry kind="output" path="target/classes"/> 
</classpath> 

我的log4j.xml看起來像

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
    <appender name="file" class="org.apache.log4j.FileAppender"> 
    <param name="File" value="target/test.log" /> 
    <param name="Append" value="false" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="[%p] [%d{HH:mm:ss.SSS}] %m%n" /> 
    </layout> 
    </appender> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out" /> 
    <param name="Threshold" value="DEBUG" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <!-- The default pattern: Date Priority [Category] Message\n --> 
     <param name="ConversionPattern" value="[%p] [%d{HH:mm:ss.SSS}] %m%n" /> 
    </layout> 
    </appender> 
    <root> 
    <priority value="INFO" /> 
    <appender-ref ref="console" /> 
    <appender-ref ref="file" /> 
    </root> 
</log4j:configuration> 

感謝您的幫助..

+0

你是什麼'log4j.xml'看起來像什麼? – 2013-06-04 06:58:11

+0

@Tichodroma:用'log4j.xml'編輯問題的詳細信息 –

+0

將log4j.xml文件放在'resources'的'com/my/abc/test'下的任何特定原因當你加載它時,你使用'test/log4j.xml',而它應該是'com/my/abc/test/log4j.xml'? –

回答

5

由於根據DOMConfigurator代碼,傳遞給它的參數被視爲文件名。而不是嘗試使用類路徑資源

public void configLogger() 
    { 
     URL u = getClass().getClassLoader().getResource("com/my/abc/test/log4j.xml"); 
     DOMConfigurator.configure(u); 
    } 
+0

感謝您的回答。它解決了這個問題 –