Posted on 2010-01-12 17:21
asdtiang 閱讀(2109)
評論(0) 編輯 收藏 所屬分類:
java se
日
志,源于log,有航海日志的意思。指記錄海員記錄每天的行程,生活及發生的事件。在軟件開發領域,用來監控代碼中變量變化,跟蹤
代碼運行的軌跡,在開發環境中擔當調試器作用,向控制臺或文件輸出信息。
幾乎所有的軟件開發語言(平臺)都有自己的日志系統,java,.net,ruby,php等。在java領
域,存在大量的日志組件,open-open收 錄了21個日志組件。
從
功能上講,這些可以分為三類,一是日志工具類,它實現了日志的記錄,格式化和級別的劃分,代表為
logback,simplelog。二是日志系統,提供了完整的框架功能并實現了日志記錄。代表為jul(jdk提供的日志框
架),log4j(apache開源項目)。三是抽象整合類,它提供了一組接口,完成日志功能,通過包裝其他日志工具或系統來工作jcl(apache開
源組件),slf4j。
從歷史上講,log4j出現最早,Ceki Gülcü是其創造者。自java1.4開始,jdk提供了java.util.logging
類庫,提供了一個完整的日志框架,在設計上要比log4j要更清晰。 這個時候,除此之外,還有一些其他日志組件,java領域從來不缺少輪子,總是有人在發明輪
子,輪子多了,就會產生混亂,就會有人站出來,要一統江湖,于是,jcl,apache一個開源的日志組件誕生了,它提供了一組日志系統的接口,通過對
log4j,jul和simplelog進行包裝,提供日志功能。這樣,開發的時候,只需要使用jcl,通過配置,靈活選擇底層實現。這樣,對于開發人員
來說,開發更簡單了些。看起來一切太平了,可Ceki Gülcü認為,應該有一個更好的日志框架。log4j經過這么久的發展,已經成為了一個巨人,亦
傷痕累累,從外面看,經典,莊重,強壯,從內部看,卻有著一根根的飛線(ThinkPad),充滿了代碼的壞味道。或許他沒有勇氣來改造這個巨人,離開也
許是最好的選擇,于是,出來,創建了slf4j,來取代jcl,創建了logback,來取代log4j。目前,log4j和jul應用最為廣
泛,slf4j作為新興的抽象層,整合logback,以其簡潔,快速,正被越來越多的頂級項目使用。
代表日志組件簡要介紹。
Log4j,歷史悠久,應用廣泛,被移植到多種語言及平臺,功能強大,在眾多的日志框架 中,仍占據著主導地位。
Jul,jdk提供的日志框架,設計精良,和jdk緊密結合,控制靈活,使用簡單。
Jcl,提供了日志的抽象層,可以整合多種實現。但有classloader問題。
Slf4j,提供了jcl的超集,避免了classloader問題。
Logback,可靠,通用,快速,靈活的java日
志工具(官方描述)。
項目選擇思考。
如果是單一的項目,如桌面應用,采
用jul,免配置,控制靈活。
如果是web開發,宜采用
log4j,因為系統已經有了很多的配置文件,不在乎多一個,而且log4j可以脫離任何組件,不像jul,和jvm緊密結合在一起。
如果是多項目整合開發,宜采用
slf4j,一是它可以整合其他遺留日志組件,二是其提供的抽象層,為將來的開發提供了靈活性。
參考資料:
1.IBM developerworks對
log4j的介紹。 鏈接
2.Java開
源日志組件列表。鏈接
3.Slf4j官 方網站。鏈接
4.Logback官 方網站。鏈接
5.Log4j官 方網站。鏈接
6.Jcl官 方網站。鏈接
7.Sun官 方網站。鏈接
8.一 個jcl的中文說明。鏈接
天蒼蒼,野茫茫,風吹草底見牛羊