Я пишу библиотеку, которая собирает различные функции, которые я буду использовать в разных приложениях. Я хочу, чтобы он генерировал операторы журнала, видимые для пользователя библиотеки, т. Е. Если я создаю приложение и использую библиотеку, я хочу, чтобы библиотека генерировала операторы журнала, видимые для меня. Как я могу это сделать? Поскольку файл журнала будет настроен разработчиком приложения, как моя библиотека узнает, как вести журнал?
Регистратор для библиотеки Java
Ответы (3)
Если вы разрабатываете библиотеку, которую другие будут включать в свои приложения, вам следует использовать фасад регистрации. В противном случае вы вынуждаете пользователей вашей библиотеки настраивать и включать выбранную вами структуру ведения журналов в дополнение к той структуре, которую они выбрали для своего приложения.
Например, если вы используете log4j, но разработчик, использующий вашу библиотеку, использует logback, ему придется включить файл конфигурации log4j и файл jar log4j (или взять другие меры), чтобы сделать вашу библиотеку счастливой.
Logging Facades решают эту проблему (из Apache Commons Logging):
При написании библиотеки очень полезно регистрировать информацию. Однако существует множество реализаций ведения журналов, и библиотека не может навязывать использование какой-либо конкретной реализации всему приложению, частью которого является библиотека.
Пакет Logging — это сверхтонкий мост между различными реализациями ведения журналов. Библиотека, использующая API-интерфейс Commons-Logging, может использоваться с любой реализацией ведения журнала во время выполнения. Commons-logging поставляется с поддержкой ряда популярных реализаций ведения журнала, а написание адаптеров для других — довольно простая задача.
Или рассуждения от SLF4J:
Простой фасад ведения журнала для Java или (SLF4J) служит простым фасадом или абстракцией для различных сред ведения журнала, например. java.util.logging, log4j и logback, что позволяет конечному пользователю подключить нужную структуру ведения журнала во время развертывания.
Кандидатами на бревенчатые фасады являются:
Лично я бы рекомендовал SLF4J (с Журнал).
Стандартные решения для этого:
- Log4J: http://logging.apache.org/log4j/
- SLF4J: http://www.slf4j.org/
- Встроенный регистратор JDK: https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html
Все они позволят вам настроить расположение файла журнала с помощью конфигурации.
Расположение вашего файла журнала задается вне пакета в конфигурации среды ведения журнала. Файл конфигурации обычно находится в пути к классам. То, как это выглядит, зависит от того, какую структуру ведения журналов вы используете. Я рекомендую использовать SLF4J и Журнал.