Подтвердить что ты не робот

Смешивание log4j 1.x и log4j 2

У меня есть новое приложение, которое записывается с использованием log4j2, чтобы воспользоваться некоторыми из его новых функций. Одна из библиотек, которые она использует, немного старше и была построена с помощью log4j 1.x. У меня возникла проблема, когда новый код в приложении записывается в журнал, но код в старой библиотеке не записывается в журнал. У меня даже есть один класс, который является подклассом чего-то в старой библиотеке и также вызывается кодом в старой библиотеке, и этот код также не будет записываться в журнал. Я настроил приложение на использование log4j2 версии 2.0.2, и я явно исключил log4j при ссылке на старую библиотеку как зависимость от maven.

Как я могу получить код в старой библиотеке в том же файле, что и мой новый код?

Повторная запись старой библиотеки должна считаться последней версией

4b9b3361

Ответ 1

Знаете ли вы, что log4j2 включает в себя мост для log4j-1.2? Вы можете использовать его, удалив старый log4j-1.2.17.jar и включив эти три банки:

  • log4j-апи-2.x.jar
  • log4j-ядро-2.x.jar
  • log4j-1,2-апи-2.x.jar

Это приведет к тому, что все вызовы, которые ваше приложение внесет в API log4-1.2, будут перенаправлены на реализацию log4j2. В FAQ есть диаграмма которая может прояснить ситуацию. (Не забудьте удалить старую банку log4j-1.2 из пути к классу!)