org.apache.commons.logging 介绍
对多种日志APIs的简单封装包API
概述
本包为服务器端程序的日志处理提供API以使用多种不同的日志系统。包括如下已经实现的:
·Log4J Apache Jakarta 项目。每个Log的实例都对应于一个Log4j Category类。
·JDK Logging API JDK1.4及后续版本中。每个Log的实例都是一个java.util.logging.Logger实例。
·LogKit Apache Jakarta 项目。每个Log的实例都对应于一个LogKit Logger类。
·NoOpLog 简单地接受将所有的Log实例的日志输出,。
·SimpleLog 将所有的Log实例的日志输出到 System.out中。
快速开始向导
别不耐烦,马上继续下去,下面的例子描述了对logger的典型声明和使用(用调用者的类名来命名):
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFacory;
public class Foo{
Log log = LogFactory.getLog(this.calss);
Public void Foo(){
…
try{
if(log.isDebugEnabled()){
log.debug(“About to do something to object” + name);
}
name.bar();
}catch(IllegalStateException e){
log.error(“Something bad happened to “ + name,e);
}
…
}
}
除非你配置不同,否则所有的日志输出都将被抛弃。因此,你很想查看此页的剩余部分以理解怎样配置你的日志系统。
配置Commons Logging包
选择一个LogFactory实现
从应用观点,首先需要的就是装载一个引用LogFactory实例的对象以便为这个应用创建一个Log实例。这通常通过调用静态的getFactory()方法完成。这个方法实现了如下的发现算法来选择LogFactory实现类的名字并在应用中使用它:
·检查org.apache.commons.logging.LogFactory的系统属性。
·使用JDK 1.3 JAR服务发现机制(参见
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html获得更多信息)来查找名为META-INF/services/org.apache.commons.logging.LogFactory的资源,其中第一行既包含了需要的类名。
·在应用程序的classpath中查找名为common-logging.properties的属性文件,其中的org.apache.commons.logging.LogFactory属性定义了期望的实现类的名字。
·回到到默认的实现中,这个接下来会介绍。
如果找到commons-logging.properties文件,其中定义的所有属性将被用来配置LogFactory实例的属性。
一旦选中一个实现类的类名,对应的类将从当前线程的类装载器(如果有)中被装载,或者从类装载器中装载LogFactory自己。这将允许在多个类装载器(如servlet容器)中共享一份commons-logging.jar的拷贝,但仍然允许每个web应用程序提供自己的LogFactory的实现,如果需要的话。该类的一个实例将被创建,并且






