2010-06-22 169 views
5

我試圖將我的log4j.properties轉換爲log4j.xml,因爲我需要使用一些過濾器功能。我得到了一堆警告,當我啓動應用程序,我不完全知道如何解決這些問題:使用log4j.xml時的log4j警告消息

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> 

有什麼我錯過了嗎?謝謝!

+0

它似乎從頂部取出standalone =「yes」屬性來解決問題。那麼我的問題是,這個獨立屬性究竟做了什麼? – fei 2010-06-22 22:31:36

回答

2

粗略地說,獨立屬性聲明信息集不受文檔外部任何內容的影響。但是,在這種情況下,它不是這樣,因爲這些屬性具有在外部DTD中指定的默認值。

2

正如您懷疑的那樣,從xml聲明中刪除standalone =「yes」屬性將解決該問題。獨立=「是」做一些微妙的事情(here's the official spec)。在這種情況下,聲明會影響log4j使用的驗證xml解析器如何解析引用dtd的xml文檔。

從聲明中刪除該屬性可能是正確的,應該不會對log4j配置產生有意義的影響。