日志系統(tǒng)是具體的日志框架,日志門面是不提供日志的具體實(shí)現(xiàn),而是在運(yùn)行時(shí)動(dòng)態(tài)的綁定日志實(shí)現(xiàn)組件來(lái)工作,是一種外觀模式。
日志系統(tǒng)
1、java.util.logging (JUL),JDK1.4 開(kāi)始,通過(guò) java.util.logging 提供日志功能。雖然是官方自帶的log lib,JUL的使用確不廣泛。
2、Log4j,Log4j 是 apache 的一個(gè)開(kāi)源項(xiàng)目,創(chuàng)始人 Ceki Gulcu。Log4j 應(yīng)該說(shuō)是 Java 領(lǐng)域資格最老,應(yīng)用最廣的日志工具。Log4j 是高度可配置的,并可通過(guò)在運(yùn)行時(shí)的外部文件配置。它根據(jù)記錄的優(yōu)先級(jí)別,并提供機(jī)制,以指示記錄信息到許多的目的地,諸如:數(shù)據(jù)庫(kù),文件,控制臺(tái),UNIX 系統(tǒng)日志等。Log4j 的短板在于性能,在Logback 和 Log4j2 出來(lái)之后,Log4j的使用也減少了。
3、Logback,Logback 是由 log4j 創(chuàng)始人 Ceki Gulcu 設(shè)計(jì)的又一個(gè)開(kāi)源日志組件,是作為 Log4j 的繼承者來(lái)開(kāi)發(fā)的,提供了性能更好的實(shí)現(xiàn),異步 logger,F(xiàn)ilter等更多的特性。
4、Log4j2,維護(hù) Log4j 的人為了性能又搞出了 Log4j2。Log4j2 和 Log4j1.x 并不兼容,設(shè)計(jì)上很大程度上模仿了 SLF4J/Logback,性能上也獲得了很大的提升。Log4j2 也做了 Facade/Implementation 分離的設(shè)計(jì),分成了 log4j-api 和 log4j-core。
日志門面
1、common-logging,common-logging 是 apache 的一個(gè)開(kāi)源項(xiàng)目。也稱Jakarta Commons Logging,縮寫 JCL。
2、slf4j, 全稱為 Simple Logging Facade for Java,即 java 簡(jiǎn)單日志門面。作者又是 Ceki Gulcu!這位大神寫了 Log4j、Logback 和 slf4j。類似于 Common-Logging,slf4j 是對(duì)不同日志框架提供的一個(gè) API 封裝,可以在部署的時(shí)候不修改任何配置即可接入一種日志實(shí)現(xiàn)方案。但是,slf4j 在編譯時(shí)靜態(tài)綁定真正的 Log 庫(kù)。使用 SLF4J 時(shí),如果你需要使用某一種日志實(shí)現(xiàn),那么你必須選擇正確的 SLF4J 的 jar 包的集合(各種橋接包)。