我有一个log4cxx.xml配置文件,它定义了多个滚动文件追加器。
<?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以使其工作,或者是一种完全不同的方法,可以获得在文件中某个位置指定最大文件大小的预期结果?
答案 0 :(得分:3)
看起来你刚刚错过了实体引用中的分号。
它应该是这样的:
<param name="MaxFileSize" value="&maxFileSize;" />
doctype声明看起来很好。