常用日誌框架Log4j,Logback,Log4j2性能比較與日誌門面SLF4J簡介

原文鏈接:https://blog.csdn.net/ThinkWon/article/details/101621135

常用日誌框架
Log4j
Log4j是Apache的一個Java的日誌庫,通過使用Log4j,我們可以控制日誌信息輸送的目的地(控制檯、文件、數據庫等);我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,我們能夠更加細緻地控制日誌的生成過程。

Logback
Logback,一個“可靠、通用、快速而又靈活的Java日誌框架”。logback當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個改良版本。此外logback-classic完整實現SLF4J API使你可以很方便地更換成其它日誌系統,如log4j或JDK14 Logging。logback-access模塊與Servlet容器(如Tomcat和Jetty)集成,以提供HTTP訪問日誌功能。請注意,您可以在logback-core之上輕鬆構建自己的模塊。

Log4j2
Apache Log4j 2是對Log4j的升級,它比其前身Log4j 1.x提供了重大改進,並提供了Logback中可用的許多改進,同時修復了Logback架構中的一些問題。

現在最優秀的Java日誌框架是Log4j2,沒有之一。根據官方的測試表明,在多線程環境下,Log4j2的異步日誌表現更加優秀。在異步日誌中,Log4j2使用獨立的線程去執行I/O操作,可以極大地提升應用程序的性能。

Log4j1/Logback/Log4j2性能比較

在官方的測試中,Log4j1/Logback/Log4j2三個日誌框架的異步日誌性能比較如下圖所示。

其中,Loggers all async是基於LMAX Disruptor實現的。可見Log4j2的異步日誌性能是最棒的。

å¨è¿éæå¥å¾çæè¿°

下圖比較了Log4j2框架SyncAsync AppendersLoggers all async三者的性能。其中Loggers all async表現最爲出色,而且線程數越多,Loggers all async性能越好。

å¨è¿éæå¥å¾çæè¿° 

日誌門面SLF4J
上述介紹的是一些日誌框架的實現(Log4j、Logback、log4j2),這裏我們需要用日誌門面來解決系統與日誌實現框架的耦合性。SLF4J,即簡單日誌門面(Simple Logging Facade for Java),它不是一個真正的日誌實現,而是一個抽象層( abstraction layer),它允許你在後臺使用任意一個日誌實現。
slf4j.jpg

前面介紹的幾種日誌框架一樣,每一種日誌框架都有自己單獨的API,要使用對應的框架就要使用其對應的API,這就大大的增加應用程序代碼對於日誌框架的耦合性。

使用了SLF4J後,對於應用程序來說,無論底層的日誌框架如何變,應用程序不需要修改任意一行代碼,就可以直接上線了。

 

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