2012-06-21 63 views
8

我想将log4j.xml与log4j.xsd(xml模式)连接起来。项目没有任何警告或错误。但是,当我启动它,这样IHAVE控制台警告:log4j:WARN文档根元素“log4j:configuration”,必须匹配DOCTYPE root“null”

的log4j:WARN可持续解析错误6和列66

的log4j:WARN文献根元素 “的log4j:配置”,必须匹配DOCTYPE根 “空”。

的log4j:WARN可持续解析错误6和列66

的log4j:WARN文献无效:没有发现语法。

我认为,模式位置的问题。但我不知道,如何正常写入。 希望您的建议。

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

而且我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> 

附:对不起,我的英语...

回答

5

产生此消息的jar希望看到DTD验证,而不是架构验证的配置。

检查你的类路径。您对此配置使用的框架版本太旧。很有可能你的磁盘上有多个同名的jar版本,这些事件会指出你的问题,并删除你不想使用的非常旧的库。

+0

我使用log4j的,1.2.17.jar又该我检查或测试? – dmgmyza

+0

非常感谢!我下载了1.2.9 - 并通过DTD更改了验证。一切还好。 – dmgmyza

+0

那么,你降级了吗? –

11

以下行添加到您的log4j.xml配置文件中<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

你能告诉我应该放置这条线的确切位置吗? –

+1

请参阅[这个答案](http://stackoverflow.com/a/10852980/487494)有关取得DTD – JavaJigs

相关问题