Ведение журнала с использованием SL4J, ведение журнала Jakarta Commons, log4j для сторонних библиотек и моего собственного кода.

StackOverflow https://stackoverflow.com/questions/462566

Вопрос

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

Проект, который я делаю, будет использовать Калитка, Весна и Спящий режим.Я знаю, что Wicket и Hibernate используют Simple Logging Facade для Java (SL4J) и что Spring использует компонент журналирования из Apache Commons.

Будут ли они счастливо сосуществовать?Я думал, что буду использовать log4j вместе с SL4J и компонентом ведения журналов из Apache commons, как вы думаете, это хорошая идея?

Могу ли я настроить их все для вывода данных журнала в общий файл?Или мне следует использовать отдельные файлы?Или мне следует хранить сообщения журнала в базе данных?(Я бы не стал, так как считаю, что grep и т. д. в текстовых файлах весьма удобны.)

Думаю, для Spring мне нужен какой-то файл конфигурации для компонента ведения журнала Apache Commons, а также где я направляю его для использования log4j?

Когда я их настроил, я думаю, чтобы увидеть, что все работает, я установил уровень ведения журнала на INFO, поскольку вполне уверен, что все три платформы выводят некоторую информацию в этом режиме?Или есть еще лучший способ убедиться?

И мой последний вопрос.Рекомендуете ли вы мне использовать SL4J в проекте, который я начинаю, для собственных целей ведения журналов?(Я думал, что буду использовать log4j напрямую, но это было до того, как я узнал немного больше о журналировании, и многие уважаемые библиотеки, похоже, выбрали путь моста/фасада для своих нужд журналирования.И если это дает нам гибкость без дополнительных затрат, нет причин не делать это таким образом.)

Я с нетерпением ожидаю услышать от вас больше о том, как вы ведете регистрацию.Для меня это новая область, в которой я хочу совершенствоваться.

Это было полезно?

Решение

Ну, SLF4J — это всего лишь фасад, как и ведение журнала общего пользования, а это значит, что для работы им все еще нужно что-то еще.Они позволяют авторам библиотек не заставлять пользователей иметь несколько библиотек журналирования и конфигураций.Log4j и logback — это обычные библиотеки журналирования.

Видеть здесь для получения дополнительной информации.

У SLF4J есть мост регистрации общего пользования которую вы можете использовать для замены библиотеки ведения журнала Commons.Я думаю, что схема очень хорошо объясняет ситуацию.

Теперь вам просто нужно использовать slf4j-logj12.jar для ведения журнала общего доступа, а slf4j использовать log4j (или что-нибудь еще по вашему выбору;Кстати, для logback не требуется дополнительная библиотека для использования с slf4j) в качестве механизма поддержки.

Таким образом, ваше приложение будет иметь

  • jcl104-over-slf4j.jar (для соединения журналов Jakarta Commons с slf4j)
  • slf4j.jar (для спящего режима и других пользователей для использования slf4j)
  • slf4j-logj12.jar (чтобы slf4j использовал log4j в качестве бэкэнда)
  • log4j.jar (для использования вашим приложением.все настройки также будут сделаны здесь)

Другие советы

Вот как перенаправить все на SLF4J:

  • удалять commons-logging.jar из вашего пути к классам.Если вы используете Maven и у вас возникли проблемы с избавлением от ведения журнала Commons, см. этот.

  • помещать jcl-over-slf4j.jar в вашем пути к классам (он входит в дистрибутив SLF4J).Это замена, которая имитирует классы JCL, но внутри вызывает SLF4J.Это позаботится о Spring и любой другой платформе, использующей JCL.

Подключите SLF4J к вашему любимому бэкэнду (Log4J, Logback...), поместив slf4j-xxx.jar в пути к классам.Настройте серверную часть для регистрации всех категорий в одном файле, и все готово.

Что касается использования SLF4J в вашем приложении, это не является строго необходимым.Такие библиотеки, как JCL и SLF4J, изначально были разработаны для людей, которые пишут библиотеки и не хотят привязывать своих клиентов к определенной структуре журналирования.

ПС:кстати, JCL = Jakarta Commons Logging

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top