Java Logger彙總

來自:http://www.cnblogs.com/echozhjun/archive/2010/01/08/1641970.html

 

JDK Logger
JDK Logger在java.util.logging包下面,自從JDK1.4就有了,可是因爲log4j的存在,這個Logger一直沉默着。Java自帶的Logger,級別比Log4j還要詳細,但是如果需要自定義日誌輸出格式,需要自己實現Formatter,有些不方便。

Log4j 
Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日誌信息輸送的目的地是控制檯、文件、GUI組件、甚至是套接口服務 器、NT的事件記錄器、UNIX Syslog守護進程等;用戶也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,用戶能夠更加細緻地控制日誌的生成過程。這些可以通過一個 配置文件來靈活地進行配置,而不需要修改程序代碼。

Slf4j 
簡單日記門面(Facade)SLF4J是爲各種loging APIs提供一個簡單統一的接口,從而使得最終用戶能夠在部署的時候配置自己希望的loging APIs實現。 Logging API實現既可以選擇直接實現SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通過SLF4J提供的API實現來開發相應的適配器如Log4jLoggerAdapter、JDK14LoggerAdapter。 

Apache-common-logging 
Apache-common-logging是Apache的又一個開放源代碼項目,爲各種loging APIs提供統一的接口,從而使得用戶能夠在運行時動態的決定自己希望使用的loging APIs實現。Apache Common-Logging通過動態查找的機制,在程序運行時自動找出真正使用的日誌庫。Apache Common-Logging使用了ClassLoader尋找和載入底層的日誌庫,所以在需要多個ClassLoader比如OSGI編程的時候就會出現問題了。

Logback 
Logback是由log4j創始人設計的又一個開源日記組件。logback當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個 改良版本。此外logback-classic完整實現SLF4J API使你可以很方便地更換成其它日記系統如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日記的功能。
 
Apache commons logging自動查找當前實現Log順序
1、首先在classpath下尋找自己的配置文件commons-logging.properties,如果找到,則使用其中定義的Log實現類;
2、如果找不到commons-logging.properties文件,則在查找是否已定義系統環境變量org.apache.commons.logging.Log,找到則使用其定義的Log實現類;建立一個叫 :CATALINA_OPTS 的環境變量,給他的值 : - Dorg.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog - Dorg.apache.commons.logging.simplelog.defaultlog = warn
3、否則,查看classpath中是否有Log4j的包,如果發現,則自動使用Log4j作爲日誌實現類;
4、否則,使用JDK自身的日誌實現類(JDK1.4以後纔有日誌實現類);
5、否則,使用commons-logging自己提供的一個簡單的日誌實現類SimpleLog。
所以,如果要實現自己的日誌系統,最簡單的方法是在classpath下放 commons-logging.properties文件,內容爲:
     org.apache.commons.logging.Log=com.hundsun.test.mylogger.MyLog
一行就可以了。
 Slf4j則使用的靜態綁定技術,每個具體的Log實現都由具體包裏的StaticLoggerBinder類來創建。所以具體Log的實現包只能放一個,否則會衝突。
要實現這個只需要在打好包的slf4j中把最開始的 StaticLoggerBinder類刪除掉就可以了。挺有技巧的,雖然很簡單。
 
發佈了15 篇原創文章 · 獲贊 14 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章