Java日誌框架與日誌系統

隨着項目愈來愈複雜,誰也不能保證本身的項目在運行過程當中不出現錯誤,出現錯誤並不可怕,問題是要及時的排除錯誤,讓項目更加健壯並繼續運行。排除這些錯誤就須要獲取錯誤信息,信息從哪裏來呢,一個設計良好的項目,確定記錄了項目運行的日誌。更重要的是,它還能完成跟蹤調試、程序狀態記錄、崩潰數據恢復等工做。那麼咱們怎麼樣來設計這個日誌類呢?java

在java的世界裏,日誌類通常是不須要考慮和設計的,由於存在不少優秀的日誌系統,好比常見的Log4j和Logback,還又sun提供的java.util.Logging。web

可是日誌系統多了,也不是好事!由於在java EE的項目中,咱們會引入不少的第三方包,好比Spring、Mybatis、Httpclient等等。。。每一個第三方的包都會有本身的日誌系統,問題就來了,若是日誌系統不兼容甚至產生衝突,災難就產生了?或者是不一樣的日誌系統打印日誌的規則不一樣,接口也不一樣,那使用方就要作各類適配。。。spring

可是。。。。這是不可能的!!!!apache

日誌框架解決了這些問題!!!框架

日誌框架是什麼?this

先看看兩者的不一樣定義!!!!spa

 

日誌系統:日誌的具體實現。經典的有log4j;jdk自帶的有java.util.Logging; 還有log4j做者推出的被高度評價的logBack等等;.net

日誌框架:若是隻存在一種日誌系統,日誌框架徹底沒有必要存在(logBack沒法獨立使用),但事與願違。爲了解決多個日誌系統的兼容問題,日誌框架應運而生。主流的日誌框架有commons-logging和sl4j;設計

commons-logging是apache推出的日誌框架,commons-logging只是規定了日誌的接口規範,其設計原理相似於jdk中servlet和jdbc的設計。調試

主流的日誌系統都實現了commons-logging定義的接口,這樣就看經過commons-logging統一的使用的日誌,而不用關係具體使用的是哪一種日誌系統。

 

日誌框架

一、Commons-logging:common-logging是apache提供的一個通用的日誌接口。用戶能夠自由選擇第三方的日誌組件做爲具體實現,像log4j,或者jdk自帶的logging,common-logging會經過動態查找的機制,在程序運行時自動找出真正使用的日誌庫。

Commons-logging+log4j 是經典的一個日誌實現方案。出如今各類框架裏。如spring 、webx 、ibatis 等等。通常爲了不直接依賴具體的日誌實現,通常都是結合commons-logging 來實現。常見代碼以下:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

private static Log logger = LogFactory.getLog(XXX.class);

二、sl4j:slf4j全稱爲Simple Logging Facade for JAVA,java簡單日誌門面。相似於Apache Common-Logging,是對不一樣日誌框架提供的一個門面封裝,能夠在部署的時候不修改任何配置便可接入一種日誌實現方案。可是,他在編譯時靜態綁定真正的Log庫。使用SLF4J時,若是你須要使用某一種日誌實現,那麼你必須選擇正確的SLF4J的jar包的集合。

logback+sl4j也是經典的一個日誌實現方案。Logback做爲一個通用可靠、快速靈活的日誌框架,將做爲Log4j 的替代和SLF4J 組成新的日誌系統的完整實現。Logback必須配合sl4j使用。因爲logback和sl4j是同一個做者,其兼容性不言而喻。但sl4j面臨與其餘日誌框架和日誌系統的兼容性問題。常見代碼以下:

import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
public class A {  
    private static Log logger = LogFactory.getLog(this.getClass());  
} 

 

參考:http://blog.csdn.net/yycdaizi/article/details/8276265

相關文章
相關標籤/搜索