JetBrains官博:將從IntelliJ平臺移除Log4j的依賴

程式猿DD發表於2022-02-14

今早,DD注意到JetBrains在官方部落格發文宣佈要將log4j從IntelliJ平臺移除了,該變化將在2022.1版本釋出。

從博文看,本次移除log4j的漏洞,並非擔心log4j2的漏洞問題,因為基於IntelliJ平臺的IDE使用的並非log4j2,而是log4j 1.2的補丁版本(移除了所有網路相關的程式碼)。這裡DD也順便看了一下,之前log4j核彈漏洞大爆發時候的訊息,根據官方給出的公告看,其旗下大量開發工具類產品並不受影響。

file

此次決定將log4j移除,核心還是因為IntelliJ平臺的IDE其實對於日誌的需求非常低(僅用來資訊到檔案和控制檯),而log4j太過於複雜(會直接或間接引入太多第三方內容)。為了避免未來出現其他潛在的問題,所以將移除對log4j的依賴。

影響範圍

從開發工具中移除log4j其實對大部分開發者影響不大,但如果你是外掛開發者,那麼會受一些影響。所以,官方給出了一些建議:

  • 如果您在自己的外掛程式碼中使用log4j:切換到使用標準平臺日誌記錄APIcom.intellij.openapi.Diagnotic.Logger
  • 如果您在自己的程式碼中使用log4j,該程式碼在外掛和其他上下文中都可以使用:請切換到使用SLF4J API。IntelliJ平臺通過java.util.log附帶了SLF4J API的實現,因此該平臺完全支援SLF4J日誌記錄。
  • 如果在程式碼的依賴項中使用log4j:請求依賴項維護者切換到SLF4J。如果這是不可能的,多虧了log4j到SLF4J橋,從依賴項進行的日誌記錄很可能會繼續工作。
  • 如果您使用log4jAPI定製使用SLF4J的依賴項的日誌記錄:切換到使用java.util.logingAPI來配置處理程式和日誌級別。
  • 如果您在測試中使用log4jXML檔案來配置日誌記錄:請切換到使用.properties檔案的配置,如LogManager文件中所述。使用IntelliJ測試框架執行測試時,可以使用idea.log.config.properties檔案系統屬性傳遞日誌屬性檔案的路徑。

DD覺得對於IntelliJ這樣的產品來說,移除log4j還是非常值得我們學習的,正如官方所說的那樣,log4j過於複雜,會引入很多其他東西,而這些東西帶來的特性對自己有沒啥用,確實會造成一些隱患。不提安全問題吧,就依賴管理上,DD以前幫其他開發查問題的時候,經常發現的依賴衝突大多就是引入了一些複雜的高階依賴形成的。

最後,考考大家,JetBrains這一決定,符合物件導向設計六大原則中的哪一個原則?留言說出你的答案!

我們建立了一個高質量的技術交流群,與優秀的人在一起,自己也會優秀起來,趕緊點選加群,享受一起成長的快樂。

歡迎關注我的公眾號:程式猿DD。第一時間瞭解前沿行業訊息、分享深度技術乾貨、獲取優質學習資源

相關文章