войти зарегистрироваться

JAVA whois

индекс
106,89

Все хорошо в меру или наконец-то в Java появился универсальный логгер

Это перевод заметки 2007 года, смысл которой вряд ли потерял или потеряет актуальность несмотря на давность. Во всем нужно знать меру, в том числе в проектировании и создании абстракций.


Вы будете смеяться. Когда «сommon-logging» пришел с универсальной системой протоколирования, абстрагирующей ваш println (я знаю, вы можете написать регистратор, который отправляет SMS и запускает ракеты), я думал: «как это здорово»!

Но увлекшись обобщениями трудно остановиться. Только J2EE сообщество способно запроектировать 12 уровней абстракций для организации системы выборочного универсального протоколирования.

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

Библиотека SLF4J является альтернатвой разработке Apache Common Logging для обобщения протоколирования. Она делает все правильно: дает регистратор, а не журнал. Более того, регистратор является интерфейсом, который удобно использовать с заглушками EasyMock. Наконец, SLF4J дает очень простой и разумный подход: комбинацию JAR c интерфейсом и JAR с одной из нескольких реализаций. Вот и все, никакой магии с загрузчиками классов и динамическим связыванием. Это идеальное решение для 99.99999% приложений.

А может кому-нибудь написать еще одну надстройку для «Commons-Logging» и «SLF4J»? Ведь в этом случае можно было бы переключаться между ними без какой-либо правки кода. :-)

комментарии (7)

  • Последнее замечание-предложение повеселило :)
  • вот пипец, а Вы как, простите, это переводили? «обобщения протоколирования», «регистратор» часто вы используете эти слова в своей жизни?
  • Это касается не только логирования. Сначала абстагировались от СУБД, потом БД вообще, затем от SQL, далее от библиотеки, работающей с СУБД.
  • Всё хорошо в меру :)
  • Когда в джаве появилось логгирование, я его попробовал, не понравилось, вернулся на log4j и по сей день им пользуюсь.
    Кстати сменить логгер — ни каких проблем (массовый реплэйс с регэкспами), только вот за много лет этого делать ни разу не понадобилось, поэтому меня не парит что коде стоят импорты org.apache.log4j.
    • плохо когда несколько компонент проекта использует разные логгеры. Библиотеки вроде commons-logging и slf4j пытаются полечить эту беду
  • Может покажусь занудой, но из заметки совершенно не понятно чем SLF4J лучше аналогов. Выделенный абзац звучит загадочно.
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.