一、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
- 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 中裝一個插件,圖標是個小辣椒,這樣你的代碼就不會飄紅了:
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>