SLF4J 和 Logback 在 Maven 專案中的使用方法

雪中亮發表於2019-02-16

「部落格搬家」 原地址: 簡書 原發表時間: 2017-04-17

本文介紹 SLF4J 和 Logback 在 Maven 專案中的用法,包括日誌框架的依賴、使用,以及 XML 配置檔案的引入。本文的精華內容翻譯 Base22,文章來源見文末。

1. 將框架 SLF4J & Logback 新增到 Maven 專案中。

通過簡單的幾個步驟,即可將 SLF4J 和 Logback 新增到 Maven 專案中。

1.1 將依賴新增到 Maven 的 POM.xml 中

直接在 Maven Repository 中搜尋 Logback, 選擇使用量最大的「Logback Classic Module」, 將該依賴新增到 POM.xml 中,例如:

<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
複製程式碼

將會在專案中匯入如下類庫:

  • logback-classic.x.x.x.jar
  • logback-core.x.x.x.jar
  • slf4j-api-x.x.x.jar

1.2 使用 XML 配置檔案初始化

將 XML 配置檔案 logback.xmllogback-test.xml 按照以下層次結構新增到專案中:

  • src
    • main
      • resources
        • logback.xml
    • test
      • resources
        • logback-test.xml

其中,兩配置檔案的內容如下:

** logback.xml **

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </encoder>
    </appender>

    <logger name="com.base22" level="TRACE"/>

    <root level="debug">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>
複製程式碼

** logback-test.xml **

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>
複製程式碼

logback.xml 中可以看到,包 com.base22 的 level 是 TRACE, 通過設定 logger 節點,可以指定特定包的 level。

除了特定包之外,專案的日誌 level 均由 root 節點指定。

2. Log 的基本使用

使用 Log 時,需要在每個 class 檔案中進行初始化操作。

首先匯入如下內容:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
複製程式碼

之後可使用如下語句引入 log :

static final Logger logger = LoggerFactory.getLogger(MyClassName.class);
複製程式碼

其中 MyClassName 改為該類的類名。

亦可在類的構造方法中使用如下語句初始化:

Logger logger = LoggerFactory.getLogger(getClass());
複製程式碼

之後可在方法中呼叫如下語句進行 log 操作:

logger.debug("debug");
logger.info("info");
複製程式碼

3. 日誌的級別 (level) 參考

日誌的級別 (level) 由低到高排列如下:

  • trace
  • debug
  • info
  • warn
  • error

4. 參考連結

  1. How to setup SLF4J and LOGBack in a web app – fast
  2. This appender no longer admits a layout as a sub-component, set an encoder instead.

相關文章