一、什么是slf4j?
slf4j,simple logging facade for java的缩写,翻译为java的简单日志外观。slf4j是一个开源项目,它提供我们一个一致的API来使用不同的日志框架,比如: java.util.logging,logback,log4j等。slf4j使用户可以在运行时嵌入他们想使用的日志框架。从名字中可以看出,它其实使用的是facade设计模式来实现的。
使用slf4j,只有一个强制性的依赖,就是slf4j-api-x.x.x.jar,我们在编写代码的时候,只会使用这个jar包里的API,应用程序在运行时去类路径下查找绑定的具体日志框架,并使用该绑定的日志框架进行实际的日志操作,如果在应用程序的类路径下面没有找到合适的绑定的话,slf4j默认使用一个没有任何操作的实现。
在许多著名的项目中都使用了slf4j,比如:Apache ActiveMQ, Ehcache, H2 database, Gradle, GreenMail, Hibernate.....
二、slf4j bindings(以slf4j-api的1.7.7版本为例)
slf4j为不同的日志框架提供了不同的绑定,在slf4j提供的分发包里包含了一些绑定。比如:
1)slf4j-log4j12-1.7.7.jar,用来绑定1.2版本的log4j日志框架,log4j是一个广泛使用的日志框架,要使用这个框架,当然还必须包含log4j的jar包在类路径下面。
2)slf4j-jdk14-1.7.7.jar,用来绑定jdk的日志框架java.util.logging(常被称为jdk 1.4 logging),不需要额外的jar包。
3)slf4j-nop-1.7.7.jar, slf4j-simple-1.7.7.jar,绑定的日志框架分别为 不执行任何操作 和 把日志输入到System.err。不需要额外的jar包。
4)slf4j-jcl-1.7.7.jar,用来绑定日志框架Jakarta Commons Logging。
5)logback-classic-1.0.13.jar,这个绑定包不是slf4j项目提供的,而是是logback项目提供的,它本身就是基于slf4j API实现的。使用logback还需要logback-core-1.0.13.jar。