2013-06-04 5 views
2

Je perds beaucoup de temps à résoudre ce problème. mais ne peut pas. peut être c'est simple.log4j: ERREUR Impossible d'analyser le fichier

Le fichier jar de l'application ne peut pas charger le fichier log4j.xml qui est le fichier de configuration de log4j.
Voici le code que je utilise

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

C'est un projet Maven __gVirt_NP_NN_NNPS<__. et mon dir strucure est:

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

Mon fichier classpath ressemble:

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

Mon log4j.xml ressemble

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

Merci pour toute aide ..

+0

À quoi ressemble 'log4j.xml'? –

+0

@Tichodroma: Editer la question avec les détails 'log4j.xml' –

+0

Une raison spécifique pour laquelle vous placez votre fichier log4j.xml sous' com/mon/abc/test' dans 'resources' Aussi quand vous le chargez, vous le chargez en utilisant' test/log4j.xml' alors que ce devrait être 'com/my/abc/test/log4j.xml'? –

Répondre

5

Comme par le code DOMConfigurator l'argument qui lui est passé est traité comme un nom de fichier. Au lieu de cela essayez d'utiliser la ressource de chemin de classe

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

merci pour la réponse. il a résolu le problème –

Questions connexes