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