2014-09-10 24 views
2

我有一個log4cxx.xml配置文件,它定義了多個滾動文件appender。在log4cxx配置中多次使用的值的單一定義

<?xml version="1.0" encoding="UTF-8" ?> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
    <appender name="A" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <param name="file" value="file1.log" /> 
    <param name="MaxFileSize" value="12MB" /> 
    ... 
    </appender> 
    ... 
    <appender name="G" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <param name="file" value="file7.log" /> 
    <param name="MaxFileSize" value="12MB" /> 
    ... 
    </appender> 
    <!-- Loggers referencing A, B, ..., G --> 

我想有一個地方的文件,在那裏我定義的最大文件大小顯示。我知道我可以用$ {MAX_FILE_SIZE}替換12MB並從環境中獲取值,但我不想設置環境變量。

看來以下應該工作。

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration [ 
<!ENTITY maxFileSize "12MB"> 
]> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
    <appender name="A" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <param name="file" value="file1.log" /> 
    <param name="MaxFileSize" value="&maxFileSize" /> 
    ... 
    </appender> 
    ... 

但是,這失敗log4cxx: Error parsing file [log4cxx.xml], Internal errorXML parser error code: not well-formed (invalid token) (4)

我來了什麼錯誤的猜測是,無論是我得到的DOCTYPE聲明錯誤,或log4cxx沒有一個完整的XML解析器和不希望的DOCTYPE。我幾乎沒有DTD的經驗,所以這兩個答案對我來說都是合理的。

是有辦法解決的DOCTYPE,使這項工作,或完全不同的方法,將得到我所需要的文件在一個位置指定的最大文件大小的結果呢?

回答

3

看起來你只是錯過了在實體引用分號。

它應該是這樣的:

<param name="MaxFileSize" value="&maxFileSize;" /> 

DOCTYPE聲明看起來不錯。

+0

這就是問題所在。謝謝! – 2014-09-11 14:32:16

相關問題