Почему файлы журналов обычно плоские?

Файлы журналов не предназначены для чтения машинами, а только пользователями? Интересно, есть ли файловые приложения для любой структуры ведения журналов, которые записывают свои выходные данные в XML.


person mamuesstack    schedule 22.08.2011    source источник


Ответы (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 источники.

person MaDa    schedule 28.08.2011
comment
Существует ли приложение, которое записывает вывод в виде XML? - person the_drow; 28.08.2011
comment
@the_drow: нет в Log4j 1.2.x. Самое близкое, что я могу придумать, это HTMLAppender, но все же это не XML. - person MaDa; 28.08.2011
comment
@MaDa Спасибо за подсказку, расширение HTMLAppender может быть хорошим способом. В итоге я написал некоторый собственный код для сбора данных журнала, сериализации их в xml и преобразования в любой формат вывода, который мне нужен. - person mamuesstack; 29.08.2011
comment
@mamuesstack Хм, я был бы осторожен с расширением, я больше думал о том, чтобы вдохновиться этим. Он содержит множество жестко закодированных директив форматирования (например, цвета, размеры шрифта), которые можно использовать в качестве основы для средства форматирования XML. - person MaDa; 29.08.2011