Реєстрація Java проти Log4J [закрито]


134

Чи все-таки варто додати бібліотеку log4j до проекту Java 5 просто для того, щоб увійти, скажімо, деякі винятки до файлу з деякими приємними налаштуваннями перекидання. Або стандартна установка util.logging також виконає свою роботу?

Що ти думаєш?


Дивіться stackoverflow.com/a/13144054/603516 для численних проблем із блокуванням log4j 1.2.
Вадзім

Відповіді:


115

Я б сказав, що ви, мабуть, добре справляєтеся з util.logging для потреб, які ви описуєте.

Щоб отримати гарне рішення, подивіться на Log4j vs java.util.logging

Перше питання: Чи передбачаєте ви потребу в будь-якому з розумних обробників, у яких Log4j не має JUL, таких як SMTPHandler, NTEventLogHandler або будь-який із дуже зручних FileHandlers?

Питання друге: Чи бачите ви, що хочете часто перемикати формат вихідного журналу? Вам знадобиться простий, гнучкий спосіб зробити це? Іншими словами, чи потрібен вам шаблон вибору Log4j?

Питання третє: Чи передбачаєте ви певну потребу у здатності змінювати складні конфігурації журналів у ваших програмах після їх складання та розміщення у виробничому середовищі? Чи звучить ваша конфігурація на кшталт: "Важкі повідомлення з цього класу надсилаються електронною поштою хлопцеві служби підтримки; суворі повідомлення з підмножини класів потрапляють до deamon syslog на нашому сервері; попереджувальні повідомлення з іншого підмножини класів отримують реєстрацію. у файл на мережевому диску A; а потім усі повідомлення звідусіль потрапляють у файл на мережевому диску B "? І чи бачите ви, що це налаштовує кожні пару днів?

Якщо ви можете відповісти "так" на будь-яке з перерахованих вище питань, перейдіть з Log4j. Якщо ви відповісте на категоричне "не", JUL буде більш ніж адекватним, і це зручно вже включено до SDK.

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


1
Відмінна відповідь на основі анкети. Кожному своє, виходячи з потреб.
HopeKing

43

Я рекомендую використовувати фасад простого ведення журналу для Java (SLF4J). Він підтримує різних провайдерів, які включають Log4J і можуть використовуватися як заміна для журналу Apache Commons.


6
Що не так із Commons Logging?
Барт ван Хекелом

5
@Bart ван Heukelom і коментар upvoters - прочитати articles.qos.ch/thinkAgain.html
Стівен C

4
@Stephen C: Дякую за інформацію, хоча я дізнався, що деякий час тому і зараз використовую SLF4J, коли можу. (Мій коментар був справжнім питанням btw, а не консервативним зауваженням)
Барт ван Хекелом

1
@Bart, Commons Logging використовують динамічне виявлення пакета, який потрібно використовувати. SLF4J для використання (або раніше) потрібні класи в бекенде, щоб взагалі завантажуватися.
Thorbjørn Ravn Andersen

21

Log4j існує давно, і він працює дуже добре. Я не маю жодного наукового дослідження, яке б підтримувало це, але виходячи з того, що я бачив у великої кількості клієнтів, я легко вважаю, що структура лісозаготівлі використовується більше, ніж будь-яка інша. Це існує вже давно, і його не замінили наступні рамки наступної великої лісозаготівлі, яка щось говорить.

Налаштовувати мертве просто, і легко вивчити основні додатки (результати). Доступні цілі заявники, включаючи:

  1. ConsoleAppender
  2. DailyRollingFileAppender
  3. Зовнішньо прокатанийFileAppender
  4. FileAppender
  5. JDBCAppender
  6. JMSAppender
  7. NTEventLogAppender
  8. RollingFileAppender
  9. SMTPAppender
  10. SocketAppender
  11. SyslogAppender
  12. TelnetAppender
  13. WriterAppender

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

Одне зауваження, у мене виник ряд проблем із завантажувачем класів, коли я використовував журнал apache commons, крім log4j. Це було лише для одного конкретного додатка, але я вважав, що простіше використовувати log4j поодинці, а не мати гнучкість при використанні шару абстракції, наприклад, загального журналу.

Дивіться цю статтю для більш детальної інформації :

Удачі!


17

java.util.logging пропонує комплексний пакет лісозаготівлі без зайвого багажу, який деякі інші надають ..


5
Крім того, він включений за замовчуванням і використовується самою Java (так у вас все одно буде!)
Має QUIT - Anonymous-Mousse

7

log4j - це набагато приємніший пакет, і він не має деяких з гикавок, які містить java.util.logging. По-друге, безпосередньо використовувати log4j простіше, ніж використовувати журнал Commons.


3
Чи можете ви подбати про конкретніші дані про гикавку, яку має java.util.logging?
алкбер

Звичайно, як накладні витрати в реєстрації синхронізованих методів: см github.com/playframework/playframework/issues/6958 і bugs.openjdk.java.net/browse/JDK-8077846
Уїлл Сарджент

4

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.