溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

項目引入log4j而不是logback代碼的原因

發(fā)布時間:2020-11-02 15:57:39 來源:億速云 閱讀:164 作者:Leah 欄目:開發(fā)技術

本篇文章給大家分享的是有關項目引入log4j而不是logback代碼的原因,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

什么是slf4j

SLF4J,即簡單日志門面(Simple Logging Facade for Java),不是具體的日志解決方案,它只服務于各種各樣的日志系統(tǒng)。按照官方的說法,SLF4J是一個用于日志系統(tǒng)的簡單Facade,允許最終用戶在部署其應用時使用其所希望的日志System。

為什么使用slf4j

上面已經(jīng)介紹了slf4j,那么至于為什么使用它。Slf4j可以看成是接口,那么既然是接口,實現(xiàn)在哪里呢?實現(xiàn)就是基于你自己的系統(tǒng)需要引入什么日志。我這里使用了log4j作為slf4j的實現(xiàn)。那么就可以通過slf4j來輸出日志。

slf4j的解耦

試想一下,如果你使用了第三方的類庫,那么比如別人使用了java.util.logging.Logger這個類庫系統(tǒng),那么你的項目使用的是log4j日志系統(tǒng),你是不是要重新引入2種日志系統(tǒng)呢?那現(xiàn)在就有人為了解決這個問題,就提供了slf4j這個日志接口類庫。你只要使用slf4j就可以了,至于你系統(tǒng)使用什么類庫作為我的實現(xiàn),我不管。那么這樣問題就解決了,這也符合java的面向?qū)ο缶幊獭?/p>

代碼部分,由于sprintboot 默認使用logback,如果想用log4j, 需要排除掉logback的jar,引入log4j 的jar

項目引入log4j而不是logback代碼的原因

看看依賴

<dependencies>
    <!--slf4j和log4j日志交換包-->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
    </dependency>
    <!--log4j包-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <!--排除logback包 -->
      <exclusions>
        <exclusion>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
        </exclusion>
        <exclusion>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

測試,生效的是log4j:

項目引入log4j而不是logback代碼的原因

如果還原依賴:

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

測試結(jié)果,看到用的是logback:

項目引入log4j而不是logback代碼的原因

反正是就要引入這些包, 但是slf4j-api已經(jīng)在springboot-web里了。所以我的代碼中沒有再引入。

//slf4j包
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.8.0-beta2</version>
</dependency>
//slf4j和log4j日志交換包
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.8.0-beta2</version>
</dependency>
//log4j包
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version><dependency>

最后講一下用intellij看依賴:

在pom.xml 鼠標右鍵

項目引入log4j而不是logback代碼的原因

項目引入log4j而不是logback代碼的原因

以上就是項目引入log4j而不是logback代碼的原因,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI