這兩天沸沸揚揚的 Log4j2 漏洞門事件炒得熱火朝天:
突發!Apache Log4j2 報核彈級漏洞,,趕緊修復!!
如果你使用的是 Log4j 1.x、Logback 或者其他日志框架,這次就可以幸免于難,
Log4j 1.x 就不用說了,這是老古董了,也就是傳說中的老牌日志框架 "Log4j",曾經無處不在,現在很少用到了,除非在一些老系統中,新專案基本都是 Log4j 2.x 和 Logback 了,
Log4j 2.x 就是對 Log4j 1.x 的升級,得到了重大改進,并且吸引了 Logback 中的優秀設計并加以優化,現在得比較多,
Logback 同樣也是 Log4j 的作者開發的,擁有更多豐富的特性,是 Log4j 1.x 的替代,
Log4j 2.x 用得比較多,一是因為它是 Apache 頂級專案,二是因為它牛逼的異步日志記錄性能:

更多性能對比參考:
https://logging.apache.org/log4j/2.x/performance.html
可以看到,同樣都是異步模式,當執行緒不斷增多時,Log4j 2.x 的性能吊打 Log4j 1.x 和 Logback,Logback 和 Log4j 則不相上下,
單從性能來說,Log4j 2.x 無疑是日志框架中的王者,但 Logback 也不甘下風,它憑借作為 Spring Boot 中的默認日志框架,Logback 也得到大量應用,

如圖,如果我們沒有指定任何其他日志 Starter,默認的就是 Logback,

它是從 Spring Boot 默認依賴中帶出來的,更多可以看堆疊長在公眾號Java技術堆疊分享過的《Spring Boot 自定義日志教程》,
很多粉絲說用的 Logback,沒有躺槍,可能也是因為使用了 Spring Boot 默認的日志配置吧,Spring Boot 機智了一回?
為什么 Logback 能成為 Spring Boot 的默認日志框架?
個人認為,主要原因是由于 Logback 是原生 SLF4J API(目前最主流的日志門面介面) 的實作,可以很輕松的切換到其他日志框架,而 Log4j 并非原生實作,它們結合 SLF4J API 都需要一個中間適配層,
這個可在參考一張國外的圖:

來源:https://krishankantsinghal.medium.com/logback-slf4j-log4j2-understanding-them-and-learn-how-to-use-d33deedd0c46
SLF4J 介面的直接原生實作是 Logback,但也可以通過中間適配層連接 Log4j 等其他非原生實作的日志框架,你看明白了嗎?
Log4j 2.x vs Logback 怎么選?
從上面的性能圖來看,Log4j 在并發寫到達 4 個執行緒/秒及以上,性能就開始碾壓 Logback 了,
所以,如果日志量很大,對性能又有要求,那么 Log4j 2.x 無疑是首選,否則用啥都無所謂,即對日志記錄沒有性能要求,日志記錄的快慢不會影響系統正常運行,畢竟 Logback 是 SLF4J 原生支持,一般的系統完全足夠應對了,
漏洞是不可避免的,Linux、Tomcat 也經常爆嚴重漏洞,我們依然要用,反過來,Log4j 2.x 也是如此,不要因為一個框架出現漏洞就馬上換其他框架,也許其他框架也有漏洞,只是沒有爆出來而已,
不多說了,最后,堆疊長再通知一次,沒修復的,盡快了:
突發!Apache Log4j2 報核彈級漏洞,,趕緊修復!!
好了,今天的分享就到這里了,后面堆疊長會分享更多好玩的 Java 技術和最新的技術資訊,關注公眾號Java技術堆疊第一時間推送,我也將主流 Java 面試題和參考答案都整理好了,在公眾號后臺回復關鍵字 "面試" 進行刷題,
著作權宣告: 本文系公眾號 "Java技術堆疊" 原創,原創實屬不易,轉載、參考本文內容請注明出處,抄襲者一律舉報+投訴,并保留追究其法律責任的權利,
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2021最新版)
2.別在再滿屏的 if/ else 了,試試策略模式,真香!!
3.臥槽!Java 中的 xx ≠ null 是什么新語法?
4.Spring Boot 2.6 正式發布,一大波新特性,,
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379374.html
標籤:其他
上一篇:工廠模式——貓糧公司的演進
