Регистрация Java и Log4J

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

Как вы думаете?

Ответ 1

Я бы сказал, что вы, вероятно, хорошо используете util.logging для потребностей, которые вы описываете.

Для хорошего дерева решений просмотрите Log4j vs java.util.logging

Вопрос первый: Ожидаете ли вы, что какой-либо из умных обработчиков Log4j не имеет такого JUL, например SMTPHandler, NTEventLogHandler или любого из очень удобных FileHandlers?

Вопрос второй: Вы видите, что хотите часто менять формат вывода журнала? Вам понадобится простой и гибкий способ сделать это? Другими словами, вам нужен Log4j PatternLayout?

Вопрос третий: Ожидаете ли вы определенную потребность в возможности изменения сложных конфигураций ведения журналов в ваших приложениях после их компиляции и развертывания в производственной среде? Ваша конфигурация звучит примерно так: "Серьезные сообщения из этого класса отправляются по электронной почте парню поддержки, серьезные сообщения из подмножества классов регистрируются в syslog deamon на нашем сервере, предупреждающие сообщения из другого подмножества классов регистрируются в журнале к файлу на сетевом диске A, а затем все сообщения от везде регистрируются в файл на сетевом диске B"? И вы видите, как вы настраиваете его каждые пару дней?

Если вы можете ответить "да" на любой из вышеуказанных вопросов, перейдите в Log4j. Если вы ответите определенному "нет" всем им, JUL будет более чем достаточным, и он будет удобно уже включен в SDK.

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

Ответ 2

Я рекомендую вам использовать Simple Logging Facade для Java (SLF4J). Он поддерживает различные поставщики, которые включают Log4J и могут использоваться в качестве замены для ведения журналов Apache.

Ответ 3

Log4j существует уже давно, и он работает очень хорошо. У меня нет научного исследования, чтобы поддержать его, но, основываясь на том, что я видел у большого числа клиентов, я легко вижу структуру ведения журналов, которую я вижу больше, чем любой другой. Он существует уже долгое время и не заменяется платформой Next Big Logging Framework, в которой говорится что-то.

Мгновенно прост в настройке и легко освоить базовые приложения (выходы). Доступны все хост-приложения, в том числе:

  • ConsoleAppender
  • DailyRollingFileAppender
  • ExternallyRolledFileAppender
  • FileAppender
  • JDBCAppender
  • JMSAppender
  • NTEventLogAppender
  • RollingFileAppender
  • SMTPAppender
  • SocketAppender
  • SyslogAppender
  • TelnetAppender
  • WriterAppender

Плюс другие. Нетрудно также написать собственный appender. Кроме того, в каждом из приложений есть большая гибкость, которая позволяет вам конкретно контролировать, что выводится в вашем журнале.

Одна заметка: у меня была серия проблем с загрузчиками классов, когда я использовал logos в дополнение к log4j. Это было только для одного конкретного приложения, но мне было проще использовать только log4j, а не иметь гибкость, предлагаемую при использовании слоя абстракции, такого как запись в сообществах.

См. эту статью для подробнее:

Удачи!

Ответ 4

java.util.logging предлагает полный пакет протоколирования без избыточного багажа, который некоторые из других предоставляют.

Ответ 5

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

Ответ 6

Я рекомендую использовать Apache Commmons Logging как ваш интерфейс ведения журнала. Таким образом, у вас есть гибкость для переключения реализаций ведения журналов в любое время, не требуя каких-либо изменений кода на вашем конце.

Ответ 7

Я бы пошел с log4j. Возможности с log4j не устарели вообще!