2014-09-23 48 views
13

我有一個新的應用程序正在使用log4j2編寫,以利用它的一些新功能。它使用的一個庫有點舊,它是用log4j 1.x構建的。我遇到了應用程序中的新代碼寫入日誌的問題,但舊庫中的代碼不寫入日誌。我甚至有一個類是舊庫中的某個子類,也是舊庫中的代碼調用的,並且此代碼也不會寫入日誌。我已將應用程序配置爲使用log4j2版本2.0.2,並且在將舊庫引用爲maven依賴項時明確排除了log4j。混合log4j 1.x和log4j 2

如何獲取舊庫中的代碼與新代碼一起登錄到同一文件中?

重寫舊庫應該被認爲是一個不得已的選擇

回答

24

您是否知道log4j2包括log4j的-1.2的橋樑?您可以通過刪除舊的log4j-1.2.17.jar使用它,包括這三個罐子:

  • 的log4j-API 2.x.jar
  • log4j的核心 - 2.x.jar
  • 的log4j-1.2-API 2.x.jar

這將導致你的應用程序對log4-1.2 API所有呼叫路由到log4j2實施。常見問題有一個diagram可能會澄清事情。 (別忘了從類路徑中刪除舊的log4j-1.2 jar!)

+1

看來我還缺少'log4j-jcl',但我現在正在進行日誌記錄工作,謝謝! – FrustratedWithFormsDesigner 2014-09-24 14:11:50

+0

當你有自定義的appender時,這個工作嗎? – 2017-07-03 08:37:33

+0

自定義Log4j2 appenders:是的。自定義log4j 1.2 appenders:不。這是一個API適配器,實現已經改變。您需要將自定義擴展程序移植到Log4j2。 – 2017-07-03 08:41:21