使用log4j.xml时的log4j警告消息

时间:2010-06-22 22:21:43

标签: java log4j

我正在尝试将我的log4j.properties转换为log4j.xml,因为我需要使用一些过滤器功能。当我启动应用程序时,我收到一堆警告,我不确定如何解决它们:

log4j:WARN Continuable parsing error 4 and column 69
log4j:WARN Attribute "threshold" for element type "log4j:configuration" has a default value and must be specified in a standalone document.
log4j:WARN Continuable parsing error 4 and column 69
log4j:WARN Attribute "debug" for element type "log4j:configuration" has a default value and must be specified in a standalone document.
log4j:WARN Continuable parsing error 4 and column 69
log4j:WARN Attribute "reset" for element type "log4j:configuration" has a default value and must be specified in a standalone document.
log4j:WARN Continuable parsing error 20 and column 23
log4j:WARN The content of element type "log4j:configuration" must match "(renderer*,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)".
log4j:WARN Unrecognized element param

我只是尝试使用一个非常简单的log4j.xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="A1" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="INFO"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p | %d{MM-dd-yyyy HH:mm:ss.SSS} | %t | %c(%L) - %m%n"/>
        </layout>
    </appender>
    <root>
        <priority value="INFO"/>
        <appender-ref ref="A1"/>
    </root>
</log4j:configuration>

我在这里错过了什么吗?谢谢!

2 个答案:

答案 0 :(得分:2)

正如您所怀疑的那样,从xml声明中删除standalone =“yes”属性将解决问题。 Standalone =“yes”做了一些微妙的事情(here's the official spec)。在这种情况下,声明会影响log4j使用的验证xml解析器如何解析引用dtd的xml文档。

从声明中删除该属性可能是正确的,并且不应对log4j配置产生重大影响。

答案 1 :(得分:2)

粗略地说,独立属性声明信息集不受文档外的任何内容的影响。但是,在这种情况下,情况并非如此,因为属性具有在外部DTD中指定的默认值。