天天看點

日志元件slf4j+logback+lombok使用執行個體

一、Slf4j

Java 日志元件, SLF4J是為各種loging APIs提供一個簡單統一的接口,進而使得最終使用者能夠在部署的時候配置自己希望的loging APIs實作。

1.1 Maven依賴

這裡推薦一下,魯班大叔開發的 Maven 依賴版本線上查詢 http://mvn.coderead.cn/

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.32</version>
</dependency>
           
1.7.32 版本的釋出時間是 2021-07-20

1.2 代碼示例

package com.ziyu.example;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {

    private final static Logger log = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        log.info("Hello World");
    }
}
           

1.3 存在問題

如果隻是單獨引用

slf4j-api

,運作以上 main 函數時,會出現以下警告:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
      

這個警告表示,作為“門面裝點”的 Slf4j 沒有找到具體的 Logger 實作。

二、logback

Logback是由log4j創始人設計的一個開源日志元件。logback目前分成三個子產品:logback-core,logback-classic和logback-access。

  • logback-core 是其它兩個子產品的基礎子產品。
  • logback-classic 是log4j的一個改良版本。

我們這裡的執行個體使用到 logback-classic

2.1 Maven依賴

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.6</version>
</dependency>
           
1.2.6 版本的釋出時間是 2021-09-10
日志元件slf4j+logback+lombok使用執行個體
  • logback-classic 還依賴 logback-core 和 slf4j-api

2.2 列印結果

還拿 1.2 代碼示例 的代碼運作,列印日志如下:

14:26:05.990 [main] INFO com.ziyu.example.Main - Hello World
      

三、lombok

Lombok 是一種 Java 實用工具,可用來幫助開發人員消除 Java 的冗長,尤其是對于簡單的 Java 對象(POJO)。它通過注釋實作這一目的。通過在開發環境中實作 Lombok,開發人員可以節省建構諸如 hashCode() 和 equals() 這樣的方法以及以往用來分類各種 accessor 和 mutator 的大量時間。

3.1 Maven依賴

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
</dependency>
           

1.18.22 釋出時間是 2021-10-07

1.18.20 釋出時間是 2021-04-02

3.2 代碼示例

如果使用 lombok,你需要在 IDEA 中裝一個插件,圖示是個小辣椒,這樣你的代碼就不會飄紅了:

日志元件slf4j+logback+lombok使用執行個體

1.2 代碼示例 的代碼就可以修改為以下代碼了:

package com.ziyu.example;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Main {

    public static void main(String[] args) {
        log.info("Hello World");
    }
}
           

四、代碼片段

為了友善自己寫 Demo 時,快速使用日志架構,是以就把代碼片段放在了這邊:

4.1 Maven依賴 slf4j+lombok+logback

<properties>
    <slf4j.version>1.7.32</slf4j.version>
    <lombok.version>1.18.20</lombok.version>
    <logback.version>1.2.6</logback.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
    </dependency>
</dependencies>
           

4.2 logback.xml

可以在

src\main\resources

添加

logback.xml

自定義日志配置:

4.2.1 簡單列印到控制台

以下配置可以列印日志資訊到控制台:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="info">
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>
           

4.2.2 更多日志

參考文檔《SpringBoot整合Slf4j+logback日志架構》

繼續閱讀