我有一个 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:解析文件 [log4cxx.xml] 时出错,内部错误XML 解析器错误代码:格式不正确(无效 token )(4)
。
我对问题所在的猜测是,要么我的 DOCTYPE 语句错误,要么 log4cxx 没有完整的 XML 解析器并且不需要 DOCTYPE。我对 DTD 缺乏经验,因此这两个答案对我来说都是合理的。
是否有一种方法可以修复 DOCTYPE 来实现此目的,或者是否有一种完全不同的方法可以获得我想要的结果,即在文件中的一个位置指定最大文件大小?
最佳答案
看起来您刚刚错过了实体引用中的分号。
它应该看起来像这样:
<param name="MaxFileSize" value="&maxFileSize;" />
文档类型声明看起来不错。
关于xml - log4cxx 配置中多次使用的单一值定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25768995/