JAVA → Все хорошо в меру или наконец-то в Java появился универсальный логгер
Это перевод заметки 2007 года, смысл которой вряд ли потерял или потеряет актуальность несмотря на давность. Во всем нужно знать меру, в том числе в проектировании и создании абстракций.
Вы будете смеяться. Когда «сommon-logging» пришел с универсальной системой протоколирования, абстрагирующей ваш println (я знаю, вы можете написать регистратор, который отправляет SMS и запускает ракеты), я думал: «как это здорово»!
Но увлекшись обобщениями трудно остановиться. Только J2EE сообщество способно запроектировать 12 уровней абстракций для организации системы выборочного универсального протоколирования.
После многих лет использования приходит понимание, что последний уровень абстракции не приносит никакой пользы,… но вместо того, что бы просто отказаться от ненужного слоя мы возводим сверху ещё один новый слой, претендующий на еще большую универсальность.
Библиотека SLF4J является альтернатвой разработке Apache Common Logging для обобщения протоколирования. Она делает все правильно: дает регистратор, а не журнал. Более того, регистратор является интерфейсом, который удобно использовать с заглушками EasyMock. Наконец, SLF4J дает очень простой и разумный подход: комбинацию JAR c интерфейсом и JAR с одной из нескольких реализаций. Вот и все, никакой магии с загрузчиками классов и динамическим связыванием. Это идеальное решение для 99.99999% приложений.
А может кому-нибудь написать еще одну надстройку для «Commons-Logging» и «SLF4J»? Ведь в этом случае можно было бы переключаться между ними без какой-либо правки кода. :-)
НЛО прилетело и опубликовало эту надпись здесь.