天天看點

slf4j、log4j、logback關系介紹

日志架構

日志架構中,經常出現的slf4j、log4j、logback、slf4j-log4j、log4j-over-slf4j等等,讓人混淆。為此,特意查找整理了一下,盜貼個圖先:

slf4j、log4j、logback關系介紹

上圖中:

  • 接口:将所有日志實作适配到了一起,用統一的接口調用
  • 實作:目前主流的日志實作
  • 舊日志到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 日志實作)

結合上段中的日志架構圖,各層次比較清晰了,是不是很簡單。