Смешивание log4j 1.x и log4j 2
У меня есть новое приложение, которое записывается с использованием log4j2, чтобы воспользоваться некоторыми из его новых функций. Одна из библиотек, которые она использует, немного старше и была построена с помощью log4j 1.x. У меня возникла проблема, когда новый код в приложении записывается в журнал, но код в старой библиотеке не записывается в журнал. У меня даже есть один класс, который является подклассом чего-то в старой библиотеке и также вызывается кодом в старой библиотеке, и этот код также не будет записываться в журнал. Я настроил приложение на использование log4j2 версии 2.0.2, и я явно исключил log4j при ссылке на старую библиотеку как зависимость от maven.
Как я могу получить код в старой библиотеке в том же файле, что и мой новый код?
Повторная запись старой библиотеки должна считаться последней версией
Ответы
Ответ 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 из пути к классу!)