Установить уровень для всех регистраторов java.util.logging программно - PullRequest
0 голосов
/ 20 февраля 2019

Я работаю над приложением, которое использует slf4j и log4j2 в качестве базовой структуры ведения журнала.Приложение предоставляет настраиваемые фильтры регистрации, основанные на текущем пользователе приложения.Некоторые сторонние библиотеки используют java.util.logging (JUL) для внутреннего использования.Я хотел бы, чтобы эти журналы также отправлялись в мой пользовательский фильтр.Т.е. хотя уровень журнала по умолчанию может быть ERROR, я могу настроить приложение для входа на уровень DEBUG, когда его использует конкретный пользователь.

Поэтому я интегрировал jul-to-slf4j мост, чтобы журнал JUL был перенаправлен на slf4j.Я также создал пользовательский java.util.logging.Filter , как описано здесь , который реализует мою пользовательскую логику фильтра.

Теперь моя проблема заключается в том, что уровень журнала по умолчанию в JUL кажетсябыть INFO, а также есть логика, которая сначала проверяет, имеет ли сообщение для журнала менее точный уровень, чем уровень регистратора, и в этом случае сообщение отклоняется немедленно, без прохождения через фильтр (в этом случае мой пользовательский фильтр),Из-за этого я хочу, чтобы все регистраторы JUL (также используемые в сторонних библиотеках) по умолчанию имели уровень ALL, чтобы все операторы журнала JUL проходили через мой фильтр, где было бы определено, регистрировать ли сообщение илиоткажитесь от этого.

Я пытался установить корневой логер JULs и уровень его обработчиков на ALL, как описано в нескольких постах здесь, на SO, но, похоже, это не помогло , как видно здесь.Похоже, я должен соответствующим образом настроить JUL LogManager, и мне интересно, могу ли я сделать это программно, не вводя новый файл журнала?

...