У меня есть WebSphere Application Server, на котором работает WebApp.Я запускаю Сервер из Eclipse.Основной каркас журналирования в этом приложении - log4j2, но есть некоторые сторонние библиотеки, которые используют java.util.logging.Я хочу перенаправить эти журналы в log4j2, чтобы он использовал мои фильтры, формат журнала и т. Д.
Я уже задавал вопросы по этой теме здесь и здесь .Сначала я попытался использовать подход , предложенный apache, установив java util LogManager
на тот, который предоставлен log4j-jul jar.Как видно из первого связанного вопроса, это не очень работает в моем случае использования.Поскольку приложение запускается как WebApp на сервере Websphere, на самом деле момент загрузки log4j-jul jar отсутствует, и я могу поменять LogManager
, но перед любыми вызовами java util Logger
или LogManager
сделаны потому, что Сервер использует эти операторы журнала перед загрузкой jar и настраивает мои параметры Log4J2.
Затем я попытался использовать Log4jBridgeHandler
, как предложено во втором связанном вопросе.Сначала я подумал, что это сработало, так как мои тестовые java-утилиты Log были напечатаны с моим точным форматом Log4j2.
У меня действительно есть две проблемы с этим подходом: я не могу использовать способ установки обработчика иуровень в logging.properties
, поскольку он просто не имеет никакого эффекта (я установил путь к файлу logging.properties
через системное свойство java.util.logging.config.file
в файле jvm.options
).
Что помогло, так это использованиеinstall()
метод Log4jBridgeHandler
, так как это позволило печатать журналы утилит java в моем формате Log4j2.Но созданный java util Logger
не имел требуемого уровня ALL
, а был установлен по умолчанию INFO
, несмотря на то, что у корневого регистратора был правильный уровень.Из-за этого защита по умолчанию в функциях ведения журнала утилит java не позволяла войти в мост, так что я никогда не смогу занести что-либо ниже уровня INFO
.
Так что да, я не в курсе.Я сделал что-то не так?Должно ли то, что я сделал, сработать?