1. 程式人生 > 其它 >【Spring 從0開始】Spring5 新功能,整合日誌框架 Log4j2

【Spring 從0開始】Spring5 新功能,整合日誌框架 Log4j2

本次系列的學習是基於 spring5 ,也就是最新的版本。

spring5 的整個程式碼都是基於 java8 的,自身作了不少的優化,比如許多不建議使用的類和方法已經在程式碼庫中刪除。

此外,spring5 框架自帶了通用的日誌封裝,但是我們依然可以整合其他的日誌框架使用,比如 Log4j。不過在 spring5 中移除了 Log4jConfigListener,需要使用 Log4j2。

一、引入依賴

引入相關 jar 包。

二、建立Log4j2 配置檔案

檔名是固定的 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--日誌級別以及優先順序排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration後面的status用於設定log4j2自身內部的資訊輸出,可以不設定,當設定成trace時,可以看到log4j2內部各種詳細輸出-->
<configuration status="INFO">
    <!--先定義所有的appender-->
    <appenders>
        <!--輸出日誌資訊到控制檯-->
        <console name="Console" target="SYSTEM_OUT">
            <!--控制日誌輸出的格式-->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </console>
    </appenders>
    <!--然後定義logger,只有定義了logger並引入的appender,appender才會生效-->
    <!--root:用於指定專案的根日誌,如果沒有單獨指定Logger,則會使用root作為預設的日誌輸出-->
    <loggers>
        <root level="info">
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>

現在就可以直接用起來了,執行一下之前的測試函程式碼:

2021-08-08 09:09:21.935 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited

Process finished with exit code 0

可以在控制檯看到,日誌資訊是根據上面配置的格式進行輸出的。

三、手動進行單獨的輸出

也可以手動的輸出一些我們指定的內容日誌。

package com.pingguo.spring5.test;

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

public class UserLog {
    private static final Logger log = LoggerFactory.getLogger(UserLog.class);

    public static void main(String[] args) {
        log.warn("手動輸出warning");
        log.error("手動輸出error");
    }

}

執行一下:

2021-08-08 09:18:02.285 [main] WARN  com.pingguo.spring5.test.UserLog - 手動輸出warning
2021-08-08 09:18:02.288 [main] ERROR com.pingguo.spring5.test.UserLog - 手動輸出error

Process finished with exit code 0
--不要用肉體的勤奮,去掩蓋思考的懶惰--