天天看點

slf4j、log4j、logback的關系

slf4j、log4j、logback的關系

slf4j譯為簡單日志門面,是日志架構的抽象,實作了日志架構一些通用的api,而log4j和logback是衆多日志架構中的幾種。

log4j和logback可以單獨的使用,也可以綁定slf4j一起使用。

1. 單獨使用。分别調用架構自己的方法來輸出日志資訊。

2. 綁定slf4j一起使用。調用slf4j的api來輸入日志資訊,具體使用與底層日志架構無關(需要底層架構的配置檔案)

使用slf4j綁定日志系統的優勢

  1. 軟體工程的角度。抽象,解耦,便于維護。可以參考一下上面的例子。
  2. 文法設計角度。slf4j有{}占位符,而log4j需要用“+”來連接配接字元串,既不利于閱讀,同時消耗了記憶體(heap memory)。

log4j和logback對比

  • log4j是apache實作的一個開源日志元件
  • logback同樣是由log4j的作者設計完成的,擁有更好的特性,用來取代log4j的一個日志架構。是slf4j的原生實作
    slf4j、log4j、logback的關系
    上圖可以看到應用程式對日志架構的調用關系。應用程式調用slf4j api,而日志的輸出最終是由底層的日志架構來實作的。這張圖也提現了log4j和logback的不同。

    可以看到logback是直接實作了slf4j的接口,是不消耗記憶體和計算開銷的。而log4j不是對slf4j的原生實作,是以slf4j api在調用log4j時需要一個适配層

slf4j綁定log4j的用法

pom.xml添加依賴

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.21</version>
</dependency>
           
slf4j、log4j、logback的關系

此時會自動添加三個jar包。

配置檔案

log4j的正常運作需要配置檔案,配置檔案類型(二選一):

1. log4j.xml

2. log4j.properties。需要為其配置root、appender、layout等資訊。

參考:Log4j配置詳解之log4j.properties

slf4j綁定logback的用法

pom.xml添加依賴

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.7</version>
</dependency>
           

配置檔案

配置檔案類型(二選一):

1. lockback.xml

參考:logback的使用和logback.xml詳解

2. 在lockback.xml引入properties。

<property file="classpath:config.properties" />
<appender xxx>
    <File>${log.path}</File>
</appender>