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