Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在log4cxx配置中多次使用的值的单一定义_Xml_Dtd_Log4cxx - Fatal编程技术网

Xml 在log4cxx配置中多次使用的值的单一定义

Xml 在log4cxx配置中多次使用的值的单一定义,xml,dtd,log4cxx,Xml,Dtd,Log4cxx,我有一个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">

我有一个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解析文件[log4cxx.xml],内部errorXML解析器错误代码:格式不正确(无效令牌)(4)
,则此操作失败

我猜测出了什么问题,要么是我把DOCTYPE语句搞错了,要么是log4cxx没有完整的XML解析器,不需要DOCTYPE。我对DTD几乎没有经验,所以这两个答案对我来说都是合理的


是否有一种方法可以修复DOCTYPE以实现此功能,或者有一种完全不同的方法可以获得我想要的结果,即在文件中的一个位置指定最大文件大小?

看起来您刚刚错过了实体引用中的分号

应该是这样的:

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


doctype声明看起来不错。

这就是问题所在。谢谢