Почему выбрал XML поверх файлов свойств для конфигурации Log4J? - PullRequest
42 голосов
/ 10 августа 2009

Есть ли причины использовать XML поверх файлов свойств для конфигурации Log4J?

Ответы [ 4 ]

39 голосов
/ 10 августа 2009

В этом блоге есть интересная дискуссия о достоинствах обоих. Раздел ниже - цитата из этого блога:

Свойства могут быть определены файлом свойств или файлом XML. Log4j ищет файл с именем log4j.xml, а затем файл с именем log4j.properties. Оба должны быть помещены в папку src .

Файл свойств менее подробен, чем файл XML. XML требует, чтобы log4j.dtd также был помещен в исходную папку. XML требует dom4j.jar, который может отсутствовать в старых версиях Java.

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

Этот фильтр позволяет определить, что [n] appender должен получать сообщения журнала с уровня INFO на WARN. Это позволяет разделить сообщения журнала между различными файлами журнала. Один для сообщений отладки, другой для предупреждений, ...

Appender поддерживает только минимальный уровень. Если вы установите для него значение INFO, вы также получите сообщения WARN, ERROR и FATAL.


Обращаясь к комментариям к моему первоначальному ответу: курсив - мой акцент. В целях данного руководства автор решил скрыть или непреднамеренно пропустил, что свойства или xml должны находиться только в пути к классам, а не в папке src. Простой способ добавить их в путь к классам - добавить их в папку src, поэтому для целей учебника это было явно сочтено достаточным.

Ничто из этого не имеет прямого отношения к заданному вопросу или намерению ответа, а именно к обсуждению преимуществ или иного использования XML-файлов для настройки log4j. Я считаю, что остальная часть цитаты актуальна и полезна для тех, кто хочет сделать осознанный выбор.

9 голосов
/ 10 августа 2009

log4j постепенно переходит на XML, поэтому свойства - это устаревший формат.

Некоторые новые функции могут быть настроены только в XML. Я был вынужден перейти на XMl, потому что мне нужно использовать TimeBasedRollingPolicy.

Однако XML настолько многословен. Я все еще использую свойства, когда могу.

3 голосов
/ 21 декабря 2009

Perf4j (http://perf4j.codehaus.org) - очень хорошая система мониторинга производительности, которая настраивается вместе с log4j и работает вместе с ней и требует файлы log4j.xml.
Поэтому, если вы планируете использовать perf4j (я бы порекомендовал), тогда требуется формат xml.

3 голосов
/ 10 августа 2009

Ну, единственное, что вы можете сделать только в конфигурации xml, это настроить регистратор на использование буферизации (используя org.apache.log4j.AsyncAppender).

Однако, если вам нужна дополнительная функциональность, вы можете также обратиться к logback, который содержит ряд других улучшений по сравнению с log4j.

...