Jakarta Commons Logging(JCL)學習筆記
簡介:JCL提供一個日志接口,同時兼顧輕量級和不依賴于具體的日志實現工具。
入門:JCL有兩個基本的抽象類:Log(基本紀錄器)和LogFactory(負責創建Log實例)。JCL尋找日志工具的過程如下:
一〉????????????? 尋找當前的factory中名叫org.apache. commons.logging.Log配置屬性的值。
二〉????????????? 尋找系統屬性中名叫org.apache.commons.logging.Log的值。
三〉????????????? 如果應用程序的CLASSPATH中有Log4j,這是用相關的包裝類(wrapper)類(Log4Jlogger).
四〉????????????? 如果應用程序運行在jdk1.4的系統中,使用相關的包裝類(JDK1.4logger).
五〉????????????? 使用簡易日志包裝類(SimpleLog).
使用logging:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyClass{
private static Log log=LogFactory.getLog(this.CLASS);
…………………………
}
這些日志信息被送往日志器,如上例中的log。
Log接口中的方法:
定義日志信息的級別,按嚴重性有:
log.fatal(Object message);
log.fatal(Object message,Throwable t);
log.error(Object message);
log.error(Object message,Throwable t);
log.warn(Object message);
log.warn(Object message,Throwable t);
log.info(Object message);
log.info(Object message,Throwable t);
log.debug(Object message);
log.debug(Object message,Throwable t);
log.trace(Object message);
log.trace(Object message,Throwable t);
fatal:非常嚴重的錯誤,導致系統終止。期望這類信息被立即顯示到狀態控制臺上。
Error:其他運行期錯誤或不是預期的條件。期望這類信息被立即顯示到狀態控制臺上。
Warn:使用了不贊成使用的API、非常拙劣的使用了API、‘幾乎就是錯誤’其他運行期不合需要和不合預期的狀態(但沒必要將其稱為錯誤)。期望這類信息被立即顯示到狀態控制臺上。
Info:運行期產生的有意義的事件。期望這類信息被立即顯示到狀態控制臺上。
Debug:系統流程中的細節信息。期望這類信息僅被寫入日志文件中。
Trace:更加細節的信息。期望這類信息僅被寫入日志文件中。
用于代碼保護(表示如果啟用了某種日志信息級別):
log.isFatalEnabled();
log.isErrorEnabled();
log.isWarnEnabled();
log.isInfoEnabled();
log.isDebugEnabled();
log.isTraceEnabled();
通常情況下,記錄器的級別不低于info,通常情況下debug信息不應被寫入log文件中。
工作機理:
一〉???????????? 生命周期:JCL LogFactory必須實現建立/斷開到日志工具的連接,實例化/初始化/解構一個日志工具。
二〉???????????? 異常處理:JCL Log接口沒有實現任何異常處理,對接口的實現必須捕獲并處理異常。
記錄器的設置:log4j時JCL的首選記錄器:
參數 |
值域 |
默認值 |
說明 |
Log4j.configuration |
? |
Log4j.properties |
指定配置文件的名字 |
Log4j.rootCategory |
Priority[,appender].* |
? |
設定根記錄器級別 |
Log4j.logger. |
Debug,info,trace,error,fatal |
設定這個記錄器的級別 |
? |
Log4j.appender..Threshold |
priority |
指定紀錄設備的最低級別(console,files,sockets,others) |
? |