概述
commons-logging和slf4j是两种日志门面接口框架
- commons-logging是动态绑定
- slf4j是静态绑定
commons-logging
运行时查找(Log)的实现类绑定日志。(由于使用ClassLoader寻找和载入日志,导致在OSGI框架中无法正常工作,因为OSGI框架不同的插件使用自己的ClassLoader)
- 首先在classpath中查找commons-logging.properties配置,找到Log实现类;
- 否则在系统环境变量中查找org.apache.commons.logging.Log,找到Log实现类
- 否则在classpath中查找实现日志工具包,找到则使用其中定义的Log实现类
- 否则使用JDK日志(JDK1.4才有)
- 否则使用commons-logging自带日志实现(SimpleLog)
slf4j
-
在以下包中定义类(Logger.class),包名和类名相同先导入先加载,替换日志类(Logger.class),桥接到SLF4j
- log4j-over-slf4j-x.x.x.jar(log4j)
- jcl-over-slf4j-x.x.x.jar(commons-logging)
- jul-to-slf4j-x.x.x.jar(jul)
-
在以下包中定义类(StaticLoggerBinder.class),桥接到日志
- slf4j-log4j12-x.x.x.jar(log4j)
- slf4j-jdk14-x.x.x.jar(jul)
- slf4j-simple-x.x.x.jar(System.err)
- logback-classic-x.x.x.jar(logback)
- slf4j-jcl-x.x.x.jar(commons-logging)