最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring boot Lombok @Slf4j日志處理教程(一篇足夠)

 更新時(shí)間:2025年09月03日 09:37:32   作者:FlyingCowUp  
@Slf4j是Lombok 庫提供的一個(gè)注解,用于自動(dòng)生成一個(gè)名為log的Logger實(shí)例,這篇文章主要介紹了spring boot Lombok @Slf4j日志處理的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

引言

在 Java 開發(fā)中,日志記錄是一項(xiàng)至關(guān)重要的功能,它能幫助開發(fā)者快速定位和解決問題。然而,傳統(tǒng)的日志記錄方式需要在每個(gè)類中手動(dòng)創(chuàng)建日志對象,這會產(chǎn)生大量的樣板代碼,影響代碼的簡潔性和可讀性。Lombok 庫提供的 @Slf4j 注解為我們解決了這一問題,極大地簡化了日志對象的創(chuàng)建過程。本文將深入講解 @Slf4j 注解,以及與之相關(guān)的 SLF4J、Logback 和 Log4j 之間的關(guān)系,同時(shí)詳細(xì)介紹日志級別、根日志和子日志的配置。

一、@Slf4j 注解的作用

@Slf4j 是 Lombok 庫提供的一個(gè)注解,其主要作用是在編譯時(shí)自動(dòng)為類生成一個(gè)基于 SLF4J(Simple Logging Facade for Java)的日志對象 log。使用該注解后,開發(fā)者無需手動(dòng)編寫創(chuàng)建日志對象的代碼,可直接使用 log 對象調(diào)用 SLF4J 的日志方法,如 log.info()、log.error() 等。

示例代碼

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyClass {
    public void doSomething() {
        log.info("Doing something...");
    }
}

在上述代碼中,使用 @Slf4j 注解后,MyClass 類中會自動(dòng)生成一個(gè)名為 log 的日志對象,在 doSomething 方法中可以直接使用該對象記錄日志信息。

二、SLF4J 和 Logback 或者 Log4j 的關(guān)系

(一)SLF4J

SLF4J 是一個(gè)日志門面,它為 Java 日志系統(tǒng)提供了統(tǒng)一的接口。開發(fā)者在編寫日志代碼時(shí)使用 SLF4J 的接口,這樣可以在不修改代碼的情況下,靈活地切換底層的日志實(shí)現(xiàn)框架。

(二)Logback 和 Log4j

Logback 和 Log4j 是具體的日志實(shí)現(xiàn)框架,它們實(shí)現(xiàn)了 SLF4J 定義的接口。Logback 是 Log4j 的繼任者,由 Log4j 的創(chuàng)始人開發(fā),在性能和功能上有所改進(jìn)。

(三)關(guān)系總結(jié)

可以將 SLF4J 看作是一個(gè)中間層,開發(fā)者通過它來調(diào)用日志功能,而 Logback 或 Log4j 則是實(shí)際執(zhí)行日志記錄操作的底層框架。這種設(shè)計(jì)使得開發(fā)者可以根據(jù)項(xiàng)目的需求和實(shí)際情況選擇合適的日志實(shí)現(xiàn),而無需擔(dān)心代碼的修改。

三、為何用 @Slf4j 注解并正確配置 Logback.xml,日志就會輸出到控制臺

(一)@Slf4j 創(chuàng)建日志對象

使用 @Slf4j 注解后,類中會自動(dòng)生成一個(gè)基于 SLF4J 的 log 對象。當(dāng)調(diào)用 log 對象的日志方法(如 log.info())時(shí),SLF4J 會根據(jù)配置去尋找具體的日志實(shí)現(xiàn)框架。

(二)Logback.xml 配置日志輸出

Logback.xml 是 Logback 的配置文件,它定義了日志的輸出格式、輸出目標(biāo)等信息。在配置文件中,可以配置不同的 Appender(日志輸出目的地),如 ConsoleAppender(輸出到控制臺)、FileAppender(輸出到文件)等。同時(shí),還可以配置日志的級別、日志的格式等。當(dāng)配置文件中指定了將日志輸出到控制臺的 Appender,并將其關(guān)聯(lián)到相應(yīng)的日志記錄器時(shí),日志信息就會按照配置的格式輸出到控制臺。

(三)示例配置

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

在上述配置中,定義了一個(gè)名為 CONSOLE 的 ConsoleAppender,并配置了日志的輸出格式。根日志的級別設(shè)置為 info,并將 CONSOLE Appender 關(guān)聯(lián)到根日志,這意味著所有不低于 info 級別的日志都會輸出到控制臺。

四、日志級別

日志級別用于控制哪些日志信息會被輸出,常見的日志級別從低到高依次為:

(一)TRACE 最詳細(xì)的日志級別,用于記錄程序執(zhí)行過程中的細(xì)枝末節(jié),通常僅在開發(fā)和調(diào)試階段使用。

(二)DEBUG 用于開發(fā)和測試環(huán)境,輸出調(diào)試信息,幫助開發(fā)者定位問題。

(三)INFO 記錄系統(tǒng)的正常運(yùn)行信息,如服務(wù)啟動(dòng)、用戶登錄等。

(四)WARN 表示可能存在潛在問題,但不影響系統(tǒng)的正常運(yùn)行,如配置文件中的過期設(shè)置。

(五)ERROR 記錄系統(tǒng)出現(xiàn)的錯(cuò)誤信息,如數(shù)據(jù)庫連接失敗、空指針異常等。

日志系統(tǒng)會輸出級別不低于當(dāng)前設(shè)定日志級別的日志信息。例如,若日志級別設(shè)置為 INFO,那么 TRACE 和 DEBUG 級別的日志信息就不會被輸出。

五、配置根日志和子日志

(一)根日志(Root Logger)

根日志是日志系統(tǒng)的頂層日志記錄器,所有其他日志記錄器都是它的子記錄器。根日志為整個(gè)日志系統(tǒng)設(shè)置基礎(chǔ)的日志級別和默認(rèn)的 Appender。如果某個(gè)子日志記錄器沒有單獨(dú)配置日志級別或者 Appender,就會繼承根日志的設(shè)置。

示例配置

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

在上述配置中,根日志的級別設(shè)置為 info,并關(guān)聯(lián)了名為 CONSOLE 的 Appender,這意味著所有不低于 info 級別的日志都會輸出到控制臺。

(二)子日志記錄器(Child Loggers)

子日志記錄器以類的全限定名或包名作為名稱,可針對特定的類或包單獨(dú)設(shè)置日志級別和 Appender,實(shí)現(xiàn)更精細(xì)的日志控制。

示例配置

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>app.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="CONSOLE" />
    </root>
    <logger name="com.example.MyClass" level="debug">
        <appender-ref ref="FILE" />
    </logger>
</configuration>

在上述配置中,根日志的級別為 info,關(guān)聯(lián) CONSOLE Appender;com.example.MyClass 子日志記錄器的級別設(shè)置為 debug,并關(guān)聯(lián)了名為 FILE 的 Appender。這表示 MyClass 類中不低于 debug 級別的日志信息會輸出到 app.log 文件中。

六、總結(jié)

通過使用 Lombok 的 @Slf4j 注解,開發(fā)者可以輕松地創(chuàng)建日志對象,避免了手動(dòng)編寫樣板代碼的繁瑣。同時(shí),結(jié)合 SLF4J 日志門面和 Logback 或 Log4j 日志實(shí)現(xiàn)框架,以及合理配置日志級別、根日志和子日志,可以實(shí)現(xiàn)靈活、高效的日志記錄功能。在實(shí)際開發(fā)中,開發(fā)者可以根據(jù)項(xiàng)目的需求和實(shí)際情況,選擇合適的日志級別和配置方式,以滿足不同場景下的日志記錄需求。

到此這篇關(guān)于spring boot Lombok @Slf4j日志處理的文章就介紹到這了,更多相關(guān)spring boot Lombok @Slf4j日志處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Shiro的運(yùn)行大致流程詳解

    Shiro的運(yùn)行大致流程詳解

    這篇文章主要介紹了Shiro的運(yùn)行大致流程詳解,Shiro和SpringSecurity都是Java領(lǐng)域中常用的安全框架,它們都提供了身份認(rèn)證和授權(quán)功能,可以幫助開發(fā)者快速構(gòu)建安全的應(yīng)用程序,需要的朋友可以參考下
    2023-07-07
  • Mybatis-Plus中的條件參數(shù)使用

    Mybatis-Plus中的條件參數(shù)使用

    這篇文章主要介紹了Mybatis-Plus中的條件參數(shù)使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java觀察者模式是一種行為型設(shè)計(jì)模式,用于實(shí)現(xiàn)對象間的一對多依賴關(guān)系。當(dāng)一個(gè)對象的狀態(tài)發(fā)生改變時(shí),它的所有依賴對象都會收到通知并自動(dòng)更新。觀察者模式可以實(shí)現(xiàn)松耦合,增強(qiáng)了系統(tǒng)的可維護(hù)性和可拓展性
    2023-04-04
  • 一文詳解JDK、Maven、Spring?Boot各版本兼容性問題

    一文詳解JDK、Maven、Spring?Boot各版本兼容性問題

    Spring Boot 作為一個(gè)高度集成的框架,其版本兼容性涉及到多個(gè)方面,這篇文章主要介紹了JDK、Maven、Spring?Boot各版本兼容性問題的相關(guān)資料,需要的朋友可以參考下
    2026-01-01
  • Spring中注解方式的異步請求

    Spring中注解方式的異步請求

    今天給大家整理了Spring中注解方式的異步請求的知識點(diǎn),對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • SpringBoot整合Mybatis簡單實(shí)現(xiàn)增刪改查

    SpringBoot整合Mybatis簡單實(shí)現(xiàn)增刪改查

    這篇文章主要介紹了SpringBoot整合Mybatis簡單實(shí)現(xiàn)增刪改查,文章為圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • MyBatisPlus之id生成策略的方法

    MyBatisPlus之id生成策略的方法

    本文主要介紹了MyBatisPlus之id生成策略的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java中的靜態(tài)代碼塊與構(gòu)造代碼塊詳解

    Java中的靜態(tài)代碼塊與構(gòu)造代碼塊詳解

    靜態(tài)代碼塊在JVM加載類時(shí)執(zhí)行,僅執(zhí)行一次,用于初始化靜態(tài)變量或執(zhí)行一次性設(shè)置,構(gòu)造代碼塊在每次創(chuàng)建對象時(shí)執(zhí)行,用于實(shí)例變量的初始化或執(zhí)行創(chuàng)建對象時(shí)的公共邏輯,靜態(tài)代碼塊按定義順序執(zhí)行,構(gòu)造代碼塊在構(gòu)造方法前執(zhí)行
    2024-11-11
  • Mybatis-Plus中的selectByMap使用實(shí)例

    Mybatis-Plus中的selectByMap使用實(shí)例

    Mybatis-Plus來對數(shù)據(jù)庫進(jìn)行增刪改查時(shí),將里面的函數(shù)試了個(gè)遍,接下來我就將使用selectByMap函數(shù)的簡單測試實(shí)例寫出來,方便沒有使用過的朋友們快速上手,感興趣的可以了解一下
    2021-11-11
  • SpringBoot默認(rèn)配置的具體使用

    SpringBoot默認(rèn)配置的具體使用

    本文主要介紹了SpringBoot默認(rèn)配置的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08

最新評論

沁源县| 旌德县| 满洲里市| 榆林市| 岳西县| 平顶山市| 星座| 黔江区| 乐清市| 东乌| 治县。| 嘉义市| 咸宁市| 林周县| 青冈县| 渑池县| 水富县| 施秉县| 额尔古纳市| 阜平县| 定安县| 襄城县| 天台县| 南通市| 米泉市| 崇义县| 修文县| 宣汉县| 大洼县| 汉中市| 垦利县| 双辽市| 南投县| 伊宁县| 沙河市| 惠东县| 南康市| 志丹县| 龙胜| 景洪市| 呼图壁县|