У меня есть файл конфигурации log4cxx.xml, который определяет несколько скопированных файлов.Одиночное определение значения, используемого несколько раз в конфигурации 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 -->
Я хотел бы иметь одно место в файле, где я определить максимальный размер файла. Я знаю, что я могу заменить 12 МБ на $ {MAX_FILE_SIZE} и получить значение из среды, но я не хочу устанавливать переменную среды.
Казалось, что следующее должно работать.
<?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, чтобы выполнить эту работу, или совершенно другой метод, который получит мой желаемый результат, указав максимальный размер файла в одном месте в файле?
В этом была проблема. Благодаря! –