Logback 對比 Log4j2

Logback 對比 Log4j2

測試分爲本地測試端和服務器端,分別對gateway網關進行日誌輸出的壓測

同步日誌,不打印日誌

logback(150併發,0間隔,循環50次)

log4j2(150併發,0間隔,循環50次)

同步日誌,打印日誌(大小4k,循環輸出100次)

logback(150併發,0間隔,循環50次)

image-20190923105944045

log4j2(150併發,0間隔,循環50次)

異步打印日誌(大小4k,循環輸出100次,僅輸出文件)

logback(150併發,0間隔,循環50次)

image-20190923112435315

log4j2(150併發,0間隔,循環50次)

測試環境

logback(50併發,0間隔,循環20次)

不打印日誌

打印日誌

log4j2(50併發,0間隔,循環20次)

不打印日誌

打印日誌

打印日誌每條30k輸出1000次(一次請求30M)

log4j2(50併發,0間隔,循環20次)

logback(50併發,0間隔,循環20次)

測試結果

對比響應時間

本地測試log4j2完爆logback(網關給的是2G堆內存)但是還是以測試環境爲準:

  1. 在不輸出日誌和僅輸出400k日誌的情況下log4j2的99%,95%相比logback的耗時都有所減少;
  2. 同樣開啓異步日誌的情況下輸出30m日誌的99%與95%差距在10倍以上.

對比jvm

對比30M日誌輸出時的JVM情況:

  1. logback進行了大量的YCG去清理臨時的臨時變量,而log4j2的變化相對穩定;
  2. logback的在異步處理的時候使用的是阻塞隊列,日誌輸出量大導致寫盤時間長隊列堆積大使得處理日誌時間過長;
  3. 對比線程變化logback線程相對變化大於log4j2.

總結

  1. 在線上環境關閉控制檯輸出會對性能有所提升;
  2. 相同情況下對比,log4j2性能更優;
  3. 在對日誌輸出場景比較多的情況下可以考慮將logback更換爲log4j2;

附錄

附錄一 : logback vs log4j2

附錄二 : Sync vs Async

附錄三:log4j2特性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章