获取Log对象

要使用JCL SPI,包含下面的导入语句:

 

import org.apache.commons.logging.Log; 

import org.apache.commons.logging.LogFactory; 

 

在类定义中,如下声明并初始化一个log 属性:

 

public class CLASS
{
    private Log log = LogFactory.getLog(CLASS.class);
    ...
    ;

注意,对于应用程序代码而言,将log变量声明为“static”会是更高效的做法,因为此类的所有实例都共享同一个Log对象这也是推荐的做法。但是,如果这个类通过“共享的”类加载器在诸如servlet或者j2ee容器或者类似环境中部署时,则会有安全问题,因为这可能会导致本应相互独立的应用程序访问同一个Log实例对象。所以在“库”类型的项目中应该避免将log变量声明为“static”。

 

 

记录日志信息

日志消息通过调用日志器(log变量)中对应于不同日志级别的方法来记录。org.apache.commons.logging.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);

以上的方法按照日志信息的严重性从高到低排列,此外,还提供了一下用于代码保护的方法: 

    log.isFatalEnabled();
    log.isErrorEnabled();
    log.isWarnEnabled();
    log.isInfoEnabled();
    log.isDebugEnabled();
    log.isTraceEnabled();