日期:2014-05-16 浏览次数:20889 次
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