經常使用日誌框架數據庫
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架構中的一些問題。async
如今最優秀的Java日誌框架是Log4j2,沒有之一。根據官方的測試代表,在多線程環境下,Log4j2的異步日誌表現更加優秀。在異步日誌中,Log4j2使用獨立的線程去執行I/O操做,能夠極大地提高應用程序的性能。性能
Log4j1/Logback/Log4j2性能比較測試
在官方的測試中,Log4j1/Logback/Log4j2三個日誌框架的異步日誌性能比較以下圖所示。spa
其中,Loggers all async是基於LMAX Disruptor實現的。可見Log4j2的異步日誌性能是最棒的。
下圖比較了Log4j2框架Sync
、Async Appenders
和Loggers all async
三者的性能。其中Loggers all async
表現最爲出色,並且線程數越多,Loggers all async
性能越好。
日誌門面SLF4J
上述介紹的是一些日誌框架的實現(Log4j、Logback、log4j2),這裏咱們須要用日誌門面來解決系統與日誌實現框架的耦合性。SLF4J,即簡單日誌門面(Simple Logging Facade for Java),它不是一個真正的日誌實現,而是一個抽象層( abstraction layer),它容許你在後臺使用任意一個日誌實現。
前面介紹的幾種日誌框架同樣,每一種日誌框架都有本身單獨的API,要使用對應的框架就要使用其對應的API,這就大大的增長應用程序代碼對於日誌框架的耦合性。
使用了SLF4J後,對於應用程序來講,不管底層的日誌框架如何變,應用程序不須要修改任意一行代碼,就能夠直接上線了。
原文連接:
https://blog.csdn.net/ThinkWon/article/details/101621135
本文分享自微信公衆號 - 源代碼社區(ydmsq666)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。