2009-09-03 2 views
9

Как работает JDK Logger по сравнению с Apache log4j?Сравнить log4j и Logger

Какой из них лучше для новых проектов, предназначенных для Java 6? Как они сравниваются с точки зрения гибкости и конфигурируемости?

+1

Довольно много чего лучше, чем 'java.util.logging', даже если это означает введение зависимостей сторонних разработчиков. – skaffman

ответ

11

На мой взгляд, единственное, что JDK Logger делает для него, это то, что он является частью JDK, поэтому он не добавляет внешнюю зависимость. Если выбор будет только между этими двумя, я бы пошел с Log4j. Он по-прежнему имеет лучшую поддержку с точки зрения добавок, количества людей, которые знают это (в моих анекдотических наблюдениях), и лучшего API (что также субъективно).

Запуск проекта сегодня, самая заманчивая вещь - пойти с slf4j и принять решение - вы всегда можете подключить другую структуру под slf4j, просто изменив путь к классам.

Это, как говорится, есть другие варианты (такие как Log5j), которые используют последние возможности языка Java. Я бы рекомендовал долго смотреть Logback (от одного из основных программистов Log4j, как и slf4j).

+1

После просмотра журнала, я думаю, что буду использовать его для новых проектов без каких-либо зависимостей библиотек от log4j, а log4j в противном случае. – notnoop

4

Я никогда не использовал прямой регистратор JDK, но для нового проекта я бы настоятельно рекомендовал Logback, , разработанный как преемник log4j. Некоторые из самых приятных вещей, которые вы можете сделать с ним:

  • PRINTF здания параметра стиля, не более запутанные строки конкатенаций защищены, если это logger.isDebugEnabled() охраной.

перейти от

if (log.isDebugEnabled()) 
{ 
    log.warn (i + "many ints,"+ l+"many longs"); 
} 

в

log.debug("{} many ints, {} many longs", i, l); 
  • очень гибкой конфигурации, в том числе конфигураций, которые будут печататься следы. Конфигурация - xml, но на их сайте есть утилита, которая будет генерировать конфигурацию xml из вашей конфигурации log4j, чтобы начать работу.

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

+1

Существующая зависимость log4j заставляет меня искушаться придерживаться ее для таких проектов! – notnoop

3

Для нового проекта я настоятельно рекомендую проект slf4j, который предоставляет общий интерфейс для нескольких фреймворков регистратора.

{} -syntax, описанный Стивом B, присутствует также в slf4j (тот же автор), поэтому вы получаете все преимущества независимо от бэкэнд и STILL получаете независимость от бэкэнда. Также доступен мост log4j, поэтому существующий код прозрачно может использовать slf4j. Это действительно приятно.

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

1

Я бы порекомендовал JDK logging API. Я использовал его много лет, без каких-либо проблем. Это часть JDK, поэтому никакой дополнительной банки не требуется. Различия между log4j и JDK-регистрацией малы и, на мой взгляд, не оправдывают использование log4j.

1

Стандартный API против log4j

общий вопрос задают разработчиков Java является:

Почему мы должны использовать рамки протоколирования log4j, когда Java предоставляет API для регистрации. К API java можно получить доступ (java.util.logging)?

Log4j имеет следующие преимущества по сравнению со стандартной лесозаготовительной API:

  • log4j обеспечивает надежный лесозаготовительной
  • log4j имеет больше возможностей, доступных по сравнению со стандартным лесозаготовительной API
  • Настройка и использование log4j легче
  • log4j также имеет гораздо более надежную систему форматирования
  • множество дополнительных программ и обработчиков доступны для log4j
+0

Этот общий вопрос - именно то, что я сейчас размышляю (и почему я здесь), но этот ответ меня смущает больше. В этом ответе, что именно подразумевается под «надежным», почему log4j более надежный? Когда дело доходит до «дополнительных функций», есть ли какие-либо моменты? Опять же, с надежностью, что такое надежная система форматирования? Я признаю, что я «новый» для входа в java, но эти реализации кажутся ужасно сверху для большинства приложений с малым средним. – ThePerson

0

Я боролся с этим вопросом несколько раз; с jdk7 и jdk8; java logging супер быстрый и гладкий, но только мы должны поставить шляпу программиста во время настройки.

Чтобы зарегистрировать несколько файловых ограничений, мы создаем классы signare, расширяющие FielHandler, и используем их в файле свойств для настройки, подобные тонкости кажутся трудоёмкими, но как только вы получите эффективность и надежность повесить.

Смежные вопросы