日期:2014-05-16  浏览次数:20892 次

apache commons Logging与Log4j结合的使用

apache commons Logging 是一种JCL ,java commons Logging.

它的宗旨在于取消各种日志框架实现之间的差异,以统一的一致地接口API来操作日志。从而实现高度的日志系统抽象,你无需从新编码就可以切换不同的日志框架实现。所以所commons Loging屏蔽了具体日志实现了之间的差异。(思路上类似于JDBC的抽象)。我们只需要面对Commons Logging操作日志即可。

其实与commons Logging体系类似的还有SLF4J,SLF4J是log4j的作者另起灶炉搞的,除了这个抽象体系外,还有一个实现用以取代log4j,就是logback,。 SLF4J也可以兼容各种日志框架实现。但是它的API更为简单,操作更为方便,更强大。SLF4J+Log4j目前很流行,SLF4J+Logback是SLF4j官方推荐的,据说比commonsLogging+log4j快几倍。同时也更方便。咱不谈它。


最常见的commons Logging实现是Log4j.所以我们主要介绍commons Loggins 与log4j的结合使用。

那commons logging如何找到或确定使用哪个实现呢。以下为其与log4j整合的大致思路:


1)        首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则使用其中定义的Log实现类;

如org.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog

2)        如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类;如:

System.getProperties().setProperty(LogFactory.class.getName(),
                                   Log4jFactory.class.getName());

3)        否则,查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类;

4)        否则,使用JDK自身的日志实现类(JDK1.4以后才有日志实现类);

5)        否则,使用commons-logging自己提供的一个简单的日志实现类SimpleLog;


可见我们只要我们将log4j的jar文件放在classpath中,就无需配置,就可以直接使用commons logging与log4j的组合了。

继承需要添加类库:commons-logging-1.1.3.jar,  log4j-1.2.17.jar.(当然log4j自己的配置文件log4j.pproperties还是要有的)

之后我们就可以直接面向commons logging编程了。


commons Logging主要操作就是两个类:Log接口,LoggerFactory

使用:

private Log log = LogFactory.getLog(CLASS.class);
日志级别:fatal,error,warn,info,debug,trace

这就ok了。

另外可以参考:

commons.apache.org/proper/commons-logging/guide.html

http://singleant.iteye.com/blog/934593