log

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

 

这么多logger,什么区别呢?

apache commons-logging类似jdbc的api接口,具体实现有log4j等,这样写代码的时候就不需要要和具体实现耦合,只要用api就可以了,那么api是如何找到用哪一实现呢?有一些规律,链接中都已经指出。

同样slf4j功能和acl差不多,具体实现有很多种,典型如logback。那么使用场景有以下几种:

1。老式的,acl+log4j

2。新式的,slf4j+logback

3。老式换成新式的,acl+log4j+slf4j,这时acl初始化时会找到slf4j,因为slf4j.jar有META-INF/services/org.apache.commons.logging.LogFactory =org.apache.commons.logging.impl.SLF4JLogFactory ,这样就是用了slf4j。

但是slf4j不能有多个实现类,否则会变懵出错。

 

 

为什么要用SLF4J+Logback 替换commons-logging+log4j?

原因索引如下:

    1. SLF4J是编译时绑定到具体的日志框架,性能优于采用运行时搜寻的方式的commons-logging。详情请移步spring-framework-reference-document:2.3.2
    2. SLF4J提供了更好的日志记录方式,带来下这几方面的好处:1、更好的可读性;2、不需要使用logger.isDebugEnabled()来解决日志因为字符拼接产生的性能问题。详情请移步为什么要使用SLF4J而不是Log4J
      logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
    3. 先参考2,logback支持了更方便的自定义日志,便于后期的日志分析,可以将日志格式化保存到各种存储引擎中,详情请移步NoSql存储日志数据之Spring+Logback+Hbase深度集成
posted @ 2014-03-12 11:06  jvava  阅读(179)  评论(0编辑  收藏  举报