SLF4J和Log4j,Logback等的关系

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,这样为未来项目的扩展和兼容留下了余地。

原文地址:https://www.cnblogs.com/Spground/p/9567869.html