slf4j的全称是Simple Logging Facade for Java,是各种日志系统实现(例如log4j, logback和java.util.logging)的抽象层或者外观层。
因此不难看出,slf4j类似于各种日志框架的api层,这样如果我们在我们需要使用日志的地方,采用slf4j的api而不是采用特定的日志框架的api去产生日志,在可扩展性和可维护性上得到了提高。
对于一些项目A,未来可能作为另一个项目B的依赖,而项目B可能希望根据自己的需要采用不同的日志系统,因此在项目A中,应该采用面向接口的方式进行日志相关编程,即采用业界统一的slf4j的方式去生成日志,这样项目B便不会因为一个使用了项目A而在日志系统的选择上受到限制。
对于slf4j在日志系统中的地位和作用,其官网上有一张很示意的图如下:
以slf4j+log4j举例
需要先在项目中引入业界的日志的事实标准:slf4j-api-xyz.jar
如有必要,还需引入对应slf4j适配日志框架的jar包:slf4j-log4j-xyz.jar
最后引入对应的日志框架:log4j-xyz.jar
因此,在项目需要产生日志的地方最好使用slf4j的api,这样为未来项目的扩展和兼容留下了余地。