Я работаю над приложением, которое использует 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
, и мне интересно, могу ли я сделать это программно, не вводя новый файл журнала?