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