Logger для библиотеки Java - PullRequest
23 голосов
/ 16 марта 2012

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

Ответы [ 3 ]

25 голосов
/ 16 марта 2012

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

Например, если вы используете log4j , но разработчик, использующий вашу библиотеку, использует logback , он должен будет включить файл конфигурации log4j и jar log4j (или принять другие меры ) чтобы сделать вашу библиотеку счастливой.

Логирование Фасады решают эту проблему (из Apache Commons Logging):

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

Пакет журналирования - это ультратонкий мост между различными реализациями журналирования. Библиотека, которая использует API регистрации общего пользования, может использоваться с любой реализацией ведения журнала во время выполнения. Commons-logging поставляется с поддержкой ряда популярных реализаций регистрации, а написание адаптеров для других - достаточно простая задача.

Или рассуждения из SLF4J:

Простой фасад ведения журнала для Java или (SLF4J) служит простым фасадом или абстракцией для различных сред ведения журнала, например, java.util.logging, log4j и logback, позволяющие конечному пользователю подключить желаемую инфраструктуру ведения журнала в развертывание время.

Кандидатами на вырубку фасадов являются:

Лично я бы порекомендовал SLF4J Logback ).

3 голосов
/ 16 марта 2012

Стандартные решения для этого:

Все они позволят вам настроить местоположение файла журнала через конфигурацию.

2 голосов
/ 16 марта 2012

Местоположение вашего файла журнала задается вне пакета, в конфигурации инфраструктуры ведения журнала.Файл конфигурации обычно находится в пути к классам.Как это выглядит, зависит от того, какую среду ведения журнала вы используете - я рекомендую использовать SLF4J и Logback .

...