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

JAVAEDL — Enterprise Dynamic Logger

Долго думал в какой блог можно поместить этот топик: в «Я пиарюсь» или «Java», но остановился на «Java», чтобы получить максимальное количество отзывов и предложений да еще и максимально профессиональных.

Итак, представляю вам Enterprise Dynamic Logger (EDL).

EDL — это тул/фреймворк для несколько другой парадигмы логгинга. В основном нужен для работы в условиях, когда код на сервере менять нельзя и сам сервер перезагружать тоже нельзя. Т.е. production environment.

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

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


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

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

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

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

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