2017-04-01 65 views
1

我正在取消對log4j的1.x版的任何依賴,因爲他們已經EOL'd。我的代碼使用slf4j-log4j12橋。在Maven的中央編譯依賴關係中,slf4j-log4j在版本1.2.17上顯示log4j,更新列顯示2.8.1。SLF4J-log4j的橋log4j的2.8.1

於是,我就在用的build.gradle希望log4j的-API-2.8.1將在地方的log4j-1.2.17這是默認的拉動可以使用以下。但這似乎並沒有奏效。我仍然在依賴jar中看到log4j-1.2.17。

所以我想問問,這一點是完全不容許?即log4j 2.8.1版本或者2.x版本沒有slf4j-log4j橋接?基本上我應該遷移我的代碼來使用log4j-api-2.8.1。或者我在這裏錯過了什麼?

dependencies { 
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.8.1' 
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25' 
} 

回答

3

slf4j-log4j12是log4j版本1.2的綁定。您需要log4j2綁定,命名爲log4j-slf4j-impl

要與log4j2一起使用SLF4J,你將需要:

  • 的log4j的API(2.8.1)
  • log4j的核心(2.8.1)
  • 的log4j-SLF4J-IMPL(2.8 1.1)
  • SLF4J的API(1.7.25)

如果你有超過log4j的1.2版的任何實施和/或依賴,你將還需要:

  • 的log4j-1.2-API(2.8.1)

但是,你不應該包括在任何情況下,以下相關:

  • 的log4j到SLF4J(2.X)
  • log4j(1.2.x)
+0

有一個問題,不知道我是否應該把它放在我的主要問題。 Slf4j 1.7.25頁面[這裏](https://www.slf4j.org/apidocs/index.html)列出org.apache.log4j。*包到最後。但實際的罐子不包含任何這些。我無法理解這裏發生的事情。請幫忙。此外Log4j的,API-2.8.1包,現在的命名空間org.apage.logging.log4j。*那麼,這如何契合Sl4j-API 1.7.25 ...? – WinCPP

+0

@WinCPP:我認爲,在SLF4J apidocs org.apache.log4j *包 「的log4j到sl4j」 的。這就是爲什麼這些不在主要API中。並且用slf4j進行擬合的實現在「log4j-sl4j-impl」中。 – sazzad

+0

@Mike HM感謝您注意到錯字。 – sazzad