Файлы журналов не предназначены для чтения машинами, а только пользователями? Интересно, есть ли файловые приложения для любой структуры ведения журналов, которые записывают свои выходные данные в XML.
Почему файлы журналов обычно плоские?
Ответы (1)
«Ведение журнала в XML» является довольно общим требованием, потому что не существует такого понятия, как стандартный формат файла журнала. Но поскольку XML-файлы являются текстовыми файлами, которые могут записывать фреймворки ведения журнала, и поскольку многие из этих фреймворков позволяют настраивать формат строки журнала, я не вижу проблем в определении вывода журнала с выбранными XML-тегами.
Для log4j это может быть примерно так:
log4j.appender.A1.layout.ConversionPattern=<line>%n<date>%d</date>%n<threadName>%t</threadName>%n<level>%p</level>%n<logger>%c</logger>%n<text>%m</text>%n</line>%n
получение примера вывода:
<line>
<date>2011-08-28 08:27:33,727</date>
<threadName>main</threadName>
<level>INFO</level>
<logger>com.log4jeval.Main</logger>
<text>Entering application.</text>
</line>
Это очень похоже на XML, не так ли? Однако в нем будет отсутствовать преамбула XML, поэтому технически он недействителен. Если это критично, я рекомендую написать собственное добавление, расширяющее org.apache.log4j.FileAppender
(или любой из его подклассов), которое будет обрабатывать любой дополнительный текст открытия/закрытия в каждом файле журнала.
Проблема с записью журналов в XML, которой нет в обычных текстовых файлах, заключается в том, что вы должны обеспечить, чтобы ни один возможный оператор журнала не печатал запрещенные символы XML, иначе вы получите не правильно сформированный XML. Этого трудно достичь без написания собственного приложения, см., например, org.apache.log4j.HTMLAppender
источники.