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) |
|