[Java]Jakarta Commons Logging简介

Java   2008-11-18 17:28   阅读9   评论0  
字号:    

一、日志简介

日志(Logging)使得我们能够调试和跟踪应用程序任意时刻的行为和状态。在任何规模较大的应用中,Logging都是不可或缺的组成部分,因此现在已经有许多第三方Logging工具,它们免去了开发者自己编写Logging API之劳。实际上,即使JDK也带有构造好了的Logging API。因为已经有了这么多选择(log4j,JDK,Logkit,等等),因此通常我们要做的就是如何找到最适合自己应用要求的现成API。

二、Commons Logging的作用

不过也有可能出现例外的情形,例如:由于某些原因,一个熟悉的Logging API不能和当前的应用程序兼容,或者是由于某种硬性规定,又或者是由于应用体系结构方面的原因等等,这种情况下该如何处理呢?Commons项目Logging组件的办法是将记录日志的功能封装为一组标准的API,但其底层实现却可以任意修改和变换。开发者利用这个API来执行记录日志信息的命令,由API来决定把这些命令传递给适当的底层句柄。因此,对于开发者来说,Logging组件对于任何具体的底层实现都是中立的。

使用Commons Logging,一旦配置好,开发就不必再关心loging功能的具体实现,而直接调用Commons Logging API进行相关操作。

三、Commons Logging的使用

1. 将commons-logging.jar加入到程序的classpath中;

2. 在需要作日志记录的class中:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LoggingDemo {
    private static Log log = LogFactory.getLog(LoggingDemo.class);
    // ...
}
注意:在调用Commons Logging API时,系统会查找底层日志记录功能的具体实现类,不管底层的日志工具是怎么找到的,它都必须是一个实现了Log接口的类,且必须在classpath中。

Commons Logging API直接提供对下列底层日志记录工具的支持:Jdk14Logger,Log4JLogger,LogKitLogger,NoOpLogger (直接丢弃所有日志信息),还有Commons Logging自带的SimpleLog。

查找日志工具的顺序如下:

  ⑴ Commons Logging首先在classpath中查找commons-logging.properties文件。这个属性文件至少必须定义org.apache.commons.logging.Log属性,它的值应该是上述任意Log接口实现的完整限定名称。

  ⑵ 如果⑴ 失败,Commons Logging接着检查系统变量org.apache.commons.logging.Log。

  ⑶ 如果找不到org.apache.commons.logging.Log系统变量,Logging接着在classpath中查找log4j的类。如果找到了,Logging就假定应用要使用的是log4j。不过这时log4j本身的属性仍要通过log4j.properties文件正确配置。

  ⑷ 如果上述查找均不能找到适当的Logging API,但应用程序正运行在JRE 1.4或更高版本上,则默认使用JRE 1.4的日志记录功能。

  ⑸ 最后,如果上述操作都失败,则应用将使用自带的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。

评论(?)
阅读(?)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
网易公司版权所有 ©1997-2009