unifirst的技术博客

不断学习 不断进步

Slf4j、log4j、logback关系介绍

日志框架

日志框架中,经常出现的slf4j、log4j、logback、slf4j-log4j、log4j-over-slf4j等等,让人混淆。为此,特意查找整理了一下,盗贴个图先:

日志架构图

上图中:

  • 接口:将所有日志实现适配到了一起,用统一的接口调用
  • 实现:目前主流的日志实现
  • 旧日志到slf4j的适配器:如果使用了slf4j,但是只想用一种实现,想把log4j的日志体系也从logback输出,这个是很有用的
  • slf4j到实现的适配器:如果想制定slf4j的具体实现,需要这些包

slf4j + logback

slf4j: slf4j是一个日志系统的封装,对外提供统一的API,不提供日志具体实现。

logback:和log4j同为日志的一种具体实现。

dependency:

  • slf4j-api (slf4j接口)
  • logback-classic (logback服务于slf4j的"驱动")
  • logback-core (logback日志实现)

如果系统有依赖log4j日志体系,想统一对接到logback,则需要依赖:

  • log4j-over-slf4j

同理,如果是slf4j+log4j组合是怎样呢?

dependency:

  • slf4j-api (slf4j接口)
  • slf4j-log4j (log4j 服务于slf4j的"驱动")
  • log4j (log4j 日志实现)

结合上段中的日志架构图,各层次比较清晰了,是不是很简单。