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接口沒有實現任何異常處理,對接口的實現必須捕獲并處理異常。

記錄器的設置:log4jJCL的首選記錄器:

參數

值域

默認值

說明

Log4j.configuration

?

Log4j.properties

指定配置文件的名字

Log4j.rootCategory

Priority[,appender].*

?

設定根記錄器級別

Log4j.logger.

Debug,info,trace,error,fatal

設定這個記錄器的級別

?

Log4j.appender..Threshold

priority

指定紀錄設備的最低級別(console,files,sockets,others

?