2012-06-21 40 views
8

Quiero conectar mi log4j.xml con log4j.xsd (esquema xml). El proyecto no tiene advertencias o errores. Pero cuando lo comienzo, ihave advertencias tales consola:log4j: WARN Elemento raíz del documento "log4j: configuración", debe coincidir con DOCTYPE root "nulo"

log4j: WARN error de análisis continuable 6 y la columna 66.

log4j: WARN elemento raíz del documento "log4j: configuración", debe coincidir con la raíz DOCTYPE "nulo".

log4j: WARN error de análisis continuable 6 y la columna 66.

log4j: WARN documento no es válido: no gramática encontrado.

Creo que, problema en el esquema Ubicación. Pero no sé, cómo escribirlo normalmente. Espero sus consejos.

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

Y mi 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. Lo siento por mi inglés ...

Respuesta

5

El jar que está produciendo este mensaje espera ver una configuración DTD validada, no validada por el esquema.

Compruebe su ruta de clase. Está utilizando una versión demasiado antigua del marco para esta configuración. Es muy probable que tenga varias versiones de un jar con el mismo nombre en su disco, y tales sucesos le indicarán el problema y la eliminación de bibliotecas muy antiguas que realmente no desea usar.

+0

estoy usando log4j-1.2.17.jar lo que debe Yo reviso o pruebo? – dmgmyza

+0

¡Muchas gracias! Descargué 1.2.9 y cambié la validación a través de DTD. todo está bien. – dmgmyza

+0

Entonces, ¿hizo una rebaja? –

11

Añadir la siguiente línea a su archivo de configuración log4j.xml justo después del elemento de <xml>:

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

¿Puedes decir la ubicación exacta donde debería colocar esta línea? –

+1

Consulte [esta respuesta] (http://stackoverflow.com/a/10852980/487494) también sobre cómo recuperar el DTD – JavaJigs

Cuestiones relacionadas