2012-06-21 3 views
8

Ich möchte meine log4j.xml mit log4j.xsd (XML-Schema) verbinden. Projekt hat keine Warnungen oder Fehler. Aber wenn ich es starten, Ihave solche Konsole Warnungen:log4j: WARN Document-Wurzelelement "log4j: configuration", muss DOCTYPE-Stamm "null" entsprechen

log4j: WARN Kontinuierbare Parsing-Fehler 6 und Spalte 66

log4j: WARN Document Root-Element "log4j: configuration" muss DOCTYPE root "null" entsprechen.

log4j: WARN Kontinuierbare Parsing-Fehler 6 und Spalte 66

log4j: WARN Dokument ist ungültig: keine Grammatik gefunden.

Ich denke, Problem in Schema Location. Aber ich weiß nicht, wie man es normal schreibt. Hoffe auf Ihre Ratschläge.

Mein log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?> 

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    debug="false" 
    xsi:schemaLocation="http://www.example.org/log4j log4j.xsd "> 

<appender name="logFileAppender" class="org.apache.log4j.RollingFileAppender"> 
     <param name="File" value="E:/Codes/HorseRacing/logFile.log"/> 
     <param name="MaxFileSize" value="1MB"/> 
     <param name="MaxBackupIndex" value="5"/> 
     <param name="Encoding" value="UTF-8"/> 
     <layout class="org.apache.log4j.EnhancedPatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} [%-5p][%-16.16t][%40.40c] - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Encoding" value="Cp866"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} [%-5p][%-25.25l][%10.10c] - %m%n" /> 
     </layout> 
    </appender> 

    <logger name="appLogger"> 
     <level value="INFO"/> 
     <appender-ref ref="logFileAppender"/> 
     <appender-ref ref="ConsoleAppender"/> 
    </logger> 

</log4j:configuration> 

Und mein log4j.xsd:

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema attributeFormDefault="unqualified" 
    elementFormDefault="qualified" version="1.0" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="configuration"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element maxOccurs="unbounded" name="appender"> 
      <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element maxOccurs="unbounded" name="param"> 
       <xsd:complexType> 
        <xsd:attribute name="name" type="xsd:string" /> 
        <xsd:attribute name="value" type="xsd:string" /> 
       </xsd:complexType> 
       </xsd:element> 
       <xsd:element name="layout"> 
      <xsd:complexType> 
       <xsd:sequence> 
       <xsd:element name="param"> 
        <xsd:complexType> 
        <xsd:attribute name="name" type="xsd:string" /> 
        <xsd:attribute name="value" type="xsd:string" /> 
        </xsd:complexType> 
       </xsd:element> 
       </xsd:sequence> 
       <xsd:attribute name="class" type="xsd:string" /> 
      </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
     <xsd:attribute name="name" type="xsd:string" /> 
     <xsd:attribute name="class" type="xsd:string" /> 
     </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="logger"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="level"> 
      <xsd:complexType> 
       <xsd:attribute name="value" type="xsd:string" /> 
      </xsd:complexType> 
      </xsd:element> 
      <xsd:element maxOccurs="unbounded" name="appender-ref"> 
       <xsd:complexType> 
       <xsd:attribute name="ref" type="xsd:string" /> 
       </xsd:complexType> 
      </xsd:element> 
      </xsd:sequence> 
      <xsd:attribute name="name" type="xsd:string" /> 
     </xsd:complexType> 
     </xsd:element> 
    </xsd:sequence> 
    <xsd:attribute name="debug" type="xsd:boolean" /> 
    <xsd:attribute name="schemaLocation" type="xsd:string" /> 
    </xsd:complexType> 
    </xsd:element> 
    </xsd:schema> 

    <logger name="appLogger"> 
    <level value="INFO"/> 
    <appender-ref ref="logFileAppender"/> 
    <appender-ref ref="ConsoleAppender"/> 
    </logger> 

    </log4j:configuration> 

P. S. Entschuldigung für mein Englisch ...

Antwort

5

Der Jar, der diese Nachricht produziert, erwartet eine DTD-validierte, nicht Schema validierte Konfiguration.

Überprüfen Sie Ihren Klassenpfad. Sie verwenden eine zu alte Version des Frameworks für diese Konfiguration. Sehr wahrscheinlich haben Sie mehrere Versionen eines Jar mit dem gleichen Namen auf Ihrer Festplatte, und solche Vorkommnisse weisen Sie auf das Problem und das Entfernen sehr alter Bibliotheken hin, die Sie nicht wirklich verwenden möchten.

+0

ich log4j-1.2.17.jar bin mit was sollte Ich überprüfe oder teste? – dmgmyza

+0

Vielen Dank! Ich habe 1.2.9 heruntergeladen - und die Validierung über DTD geändert. alles ok. – dmgmyza

+0

Also, hast du herabgestuft? –

11

Fügen Sie die folgende Zeile in log4j.xml Konfigurationsdatei direkt nach dem <xml> Element:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

Complete log4j Configuration Example from their wiki:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
    </appender> 

    <root> 
    <priority value ="debug" /> 
    <appender-ref ref="console" /> 
    </root> 

</log4j:configuration> 
+1

können Sie den genauen Standort angeben, wo sollte ich diese Zeile platzieren? –

+1

Siehe auch [diese Antwort] (http://stackoverflow.com/a/10852980/487494) zum Abrufen der DTD – JavaJigs