Подтвердить что ты не робот

Перенос проекта из log4j в slf4j + log4j

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

  • наша база кода - напрямую использует log4j.
  • Hibernate - использует slf4j и привязку slf4j-log4j.
  • Spring - использует commons-loggings. Таким образом, он использует мост jcl-over-slf4j api, сам slf4j и slf4j-log4j.
  • Другие многочисленные библиотеки, используя либо commons loggings, либо log4j.

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

  • Очиститель api.
  • Повышение производительности, а именно возможность использования параметризованных методов ведения журнала.
  • Возможность легко переключаться на логин в будущем (в настоящее время логика не может быть и речи).
  • Нет необходимости в дополнительных баночках, так как у меня их уже есть.

Есть ли другие преимущества? Есть ли недостатки, о которых я еще не знаю?

4b9b3361

Ответ 1

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

Вероятно, основные причины, по которым я перешел на slf4j (это относится только к slf4j + logback), это то, что вы можете перезагрузить конфигурацию через JMX, что является БОЛЬШИМ, когда вы есть проблема, которая исчезает при перезапуске сервера.

Ответ 2

Для меня было четыре функции "убийцы", которые стоили боли при переходе к Logback, поверх тех, которые вы уже упоминали (я лично переключил свой текущий главный проект, работая безупречно):

  • Автоматическая перезагрузка конфигурационных файлов. Это классно для производственных систем. Если вы просто хотите установить "debug" в один класс, но не сбиваете всю систему, это бесценно.
  • Возможность использования файлов include в конфигурации.. Это позволяет вам иметь "главный" набор параметров ведения журнала для всех ваших служб /JVM, а затем вы можете указать любые пакеты, которые могут потребовать специальных обработка. В настоящее время у нас около ~ 10 сервисов, и у них есть большая, но в основном аналогичная, копия log4j.xml. Теперь мы меняем его на один файл конфигурации основного журнала и включаем этот файл в каждый конфигурационный файл журнала обслуживания. Главный файл по-прежнему будет большим, но специфические для обслуживания должны быть очень маленькими. Гораздо удобнее обслуживать.
  • Условная обработка.. Таким образом вы можете указать такие вещи, как "если QAServer = > , а затем установить уровни ведения журнала на" DEBUG ", иначе" INFO ". Опять же, отлично подходит для одной конфигурации, t необходимо изменить между серверами производства и dev/QA.
  • Автоматическое сжатие и удаление старых файлов журнала. Вы можете указать, сколько архивных файлов вы хотите сохранить и, возможно, сжать их. После создания файла n + 1 он обнаружит, что там слишком много, и удалит самый старый. Опять же, настраивается для каждого файла/службы, нет необходимости делать какие-либо системные (командные файлы и/или скрипты).

Кстати, после этого изменения, тривиально легко вернуться к log4j. Поскольку переход на Logback, требуемый с использованием SLF4J, который также поддерживает Log4j, для переключения туда и обратно требуется только выбрать, какой файл jar будет удален (Log4j или Logback's). Пока соответствующие файлы конфигурации log4j.xml или logback находятся в пути к классам, регистрация будет работать правильно.