использовать вместе log4j и java.util.logging - PullRequest
0 голосов
/ 22 мая 2018

Мы используем log4j для ведения журнала, но приложение также зависит от нескольких третьих сторон, которые используют java.util.logging.Довольно просто изменить формат в logging.properties, чтобы сделать его таким же, как другие журналы, но как мне убедиться, что эти третьи стороны пишут в тот же файл, что и основное приложение.

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

1 Ответ

0 голосов
/ 23 мая 2018

Вы не сможете открыть обеим фреймворкам один и тот же целевой файл, так как JUL хочет получить эксклюзивное владение целевым файлом журнала.

Вам необходим мост ведения журнала , который преобразует записи журнала изJUL и публикует их в Log4J.

Одним из примеров является Log4j LogDj JDK Logging Adapter :

JDK Logging Adapter - это пользовательская реализация java.util.logging.LogManager, который использует Log4j.Этот адаптер можно использовать либо с Log4j API, либо с Log4j Core.При использовании с API есть несколько функций JUL, которые не поддерживаются.Однако это позволяет любому другому провайдеру Log4j, кроме провайдера Core, использоваться с JUL.

Чтобы использовать адаптер ведения журнала JDK, необходимо установить системное свойство java.util.logging.manager равным org.apache.logging.log4j.jul.LogManager

Другой популярный пример - мост jul-to-slf4j

Артефакт jul-to-slf4j.jarвключает в себя обработчик java.util.logging (jul), а именно SLF4JBridgeHandler, который маршрутизирует все входящие записи jul в API SLF4j.

...