Найдите путь в сцене с фреймворками для ведения журналов Java

В Java есть множество фреймворков / API, которые помогают вам вести журнал в вашем приложении:

  1. В Java API есть пакет java.util.logging.
  2. Log4j от Apache.
  3. Ведение журнала Apache Commons.
  4. SLF4J (Фасад лесозаготовок).
  5. jLo. и многое другое ...

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

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

Спасибо


person Alon Aizenberg    schedule 23.01.2009    source источник
comment
Точный дубликат stackoverflow.com/questions/354837 /   -  person Tom Hawtin - tackline    schedule 23.01.2009


Ответы (5)


Этот вопрос кажется идентичным 354837.

Простой ответ заключается в том, что вы бы выбрали Commons Logging, если пишете библиотеку, которая может быть добавлена ​​в приложения, где у вас нет контроля над журналированием, в противном случае - один из других вариантов. Я лично использую CL во всех случаях просто потому, что это обычное дело - мне не нужно помнить о различиях между фреймворками.

person kdgregory    schedule 23.01.2009
comment
Я не был тем человеком, который голосовал против вас, но у меня довольно сильная аллергия на commons.logging ... Я использовал его исключительно до трех лет назад и переключил весь код под своими пальцами на SLF4J тем временем. Я бы по-прежнему считал ваш ответ грубым, особенно без комментариев, но некоторые люди такие :( - person Huxi; 11.06.2009

Ведение журнала Commons - это источник странных проблем с загрузкой классов. Избегайте этого, если можете. Я предпочитаю log4j при разработке приложений. Если вы разрабатываете библиотеку / фреймворк и не хотите применять библиотеку журналирования, выберите slf4j.

person Peter Štibraný    schedule 23.01.2009
comment
И не забываем, что официальный ник Commons Logging забивается. - person Damien B; 24.01.2009

Если бы это был новый код, я бы начал с slf4j, поскольку он обеспечивает простейший способ переключения между базовыми api журналирования, просто включив требуемый файл slf- [logging_api] .jar в classparth вашего приложения. Например, если вы начинаете с log4j, вам все равно нужно настроить регистратор Conole в файле log4j.xml, чтобы увидеть вывод журнала, с slf4j вы просто включаете slf4j-simple.jar.

person emeraldjava    schedule 23.01.2009

Logback - это перезапись log4j. Если вам нравится log4j, вам должен понравиться логбэк еще больше.

Более того, логбэк - это собственная реализация SLF4J API, что означает, что если вы используете логбэк, значит, вы фактически используете SLF4J. Таким образом, если по какой-либо причине вы захотите вернуться к другому фреймворку ведения журнала, будь то log4j или j.u.l. вы можете сделать это, заменив один файл jar другим.

person Ceki    schedule 29.05.2009

Какова бы ни была официальная позиция, "log4j" - это стандартный фреймворк для ведения журнала.

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

Придерживайтесь log4j, нет веских причин пробовать что-то еще.

person James Anderson    schedule 23.01.2009
comment
Если вы используете фасад, вы можете переключать серверную часть журналирования по своему усмотрению или необходимости. SLF4J - лучший фасад по сравнению с commons.logging, поскольку он поддерживает параметризованные сообщения и MDC. Раньше я переключал ›проект 100kLines с commons.logging на SLF4J. Это было несложно, в основном поиск и удаление ... эээ ... замена с минимальными ручными изменениями. То же самое должно быть в случае LOG4J - по крайней мере, если NDC не используется, поскольку он не поддерживается SLF4J. - person Huxi; 03.06.2009