日誌

http://logging.apache.org/log4j/2.x/maven-artifacts.htmlhtml

日誌接口庫java

common-loggingapache

common-logging爲衆多具體的日誌實現庫提供了一個統一的接口。它容許在運行時綁定到任意的日誌庫。但因爲它使用了ClassLoader尋找和載入底層的日誌庫,這致使像OSGi這樣的框架沒法正常工做,因爲其不一樣的插件使用本身的ClassLoader。 OSGi的這種機制保證了插件互相獨立,然而卻使Apache Common-Logging沒法工做。框架

詳細參考:http://commons.apache.org/proper/commons-logging/maven

slf4j.net

即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各類各樣 的日誌系統,容許最終用戶在部署其應用時使用其所但願的日誌系統。插件

實際上,SLF4J所提供的核心API是一些接口以及一個LoggerFactory的工廠類。在使用SLF4J的時候,不須要在代碼中或配置文件中指定你打算使用那個具體的日誌系統。SLF4J提供了統一的記錄日誌的接口,只要按照其提供的方法記錄便可,最終日誌的格式、記錄級別、輸出方式等經過具體日誌系統的配置來實現,所以能夠在應用中靈活切換日誌系統。日誌

詳細參考:http://www.slf4j.org/code

common-logging與slf4j相比htm

common-logging在運行時經過動態查找機制自動找出真正使用的日誌庫,而sflfj則是在部署的時候就肯定了所使用的日誌庫。目前slf4j用得更多一些。

 在使用Commons Logging時,咱們常常會看到如下方法的寫法:

if (logger.isDebugEnabled()) {

    logger.info("Loading XML bean definitions from " + encodedResource.getResource());

}

存在isDebugEnabled()的判斷邏輯是爲了在避免多餘的字符串拼接,即若是不存在isDebugEnabled()判斷,即便當前日誌級別爲ERROR時,在遇到logger.info()調用時,它還會先拼接日誌消息的字符串,而後進入該方法內,才發現這個日誌語句不用打印。而這種多餘的拼接不只浪費了多餘的CPU操做,並且會增長GC的負擔。SLF4J則提供如下的方式來解決這個問題:

logger.info("Loading XML bean definitions from {}", encodedResource.getResource());

日誌實現庫

java.util.logging

Java1.4及以上版本中自帶的日誌庫實現。與log4j相比,功能要少一些。

 

Log4j

Log4j是Apache下的一個功能很是豐富的Java日誌庫實現。經過使用Log4j,咱們能夠控制日誌信息輸送的目的地是控制檯、文件、GUI組件、甚至是套接口服務 器、NT的事件記錄器、UNIX Syslog守護進程等;用戶也能夠控制每一條日誌的輸出格式;它有兩個主要版本,1.2和2.x。2.x在1.x基礎上作了不少改進,吸取了Logback中的不少優勢,並且解決了Logback中存在的一些問題。

詳細參考:http://logging.apache.org/log4j/1.2/http://logging.apache.org/log4j/2.x/

 

Logback

Logback是做爲Log4j的替代者出現的,在不少方面相比Log4j更優秀。做者還專門撰文描述爲何要從Log4j遷移到Logback,參見:http://logback.qos.ch/reasonsToSwitch.html

詳細參考:http://logback.qos.ch/ 

 

Log4j與Logback相比

Logback與Log4j1.x相比,在各個方面都要更好,在它們之間選擇確定選Logback。但由於Log4j2.x的重大改進,在Log4j2.x和Logback之間的選擇我還沒來得及仔細分析和比較,暫時留個疑問,後面分析了再補上。不過對於通常的J2EE應用沒有太大的區別。

 

參考資料:

1.  http://liuzidong.iteye.com/blog/776072   Java日誌框架:SLF4J, Apache Common-Logging, Log4J和Logback

2.  http://www.blogjava.net/lhulcn618/articles/16996.html Log4j 對比 java.util.logging

3.  http://www.cnblogs.com/Leo_wl/p/3417215.html  Log4j、Log4j 二、Logback、SFL4J、JUL、JCL的比較

=========

補充資料:

log4j和log4j2區別:

http://blog.csdn.net/fangaohua200/article/details/53561718

相關文章
相關標籤/搜索