溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何掌握SpringBoot日志文件

發(fā)布時(shí)間:2023-03-11 13:47:52 來(lái)源:億速云 閱讀:124 作者:iii 欄目:開發(fā)技術(shù)

這篇“如何掌握SpringBoot日志文件”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“如何掌握SpringBoot日志文件”文章吧。

    SpringBoot日志文件

    1. 日志有什么用

    日志是程序的重要組成部分,想象一下,如果程序報(bào)錯(cuò)了,不讓你打開控制臺(tái)看日志,那么你能找到報(bào)錯(cuò)的原因嗎。

    日志對(duì)于我們來(lái)說(shuō),最主要的用途就是排除和定位問(wèn)題。除了發(fā)現(xiàn)和定位問(wèn)題之外,我們還可以通過(guò)日志實(shí)現(xiàn)以下功能:

    • 記錄用戶登錄日志,方便分析用戶是正常登錄,還是惡意破解用戶

    • 記錄系統(tǒng)的操作日志,方便數(shù)據(jù)恢復(fù)和定位操作人

    • 記錄程序的執(zhí)行時(shí)間,方便以后優(yōu)化程序提供數(shù)據(jù)支持

    2. 日志怎么用

    Spring Boot項(xiàng)目在啟動(dòng)的時(shí)候默認(rèn)就會(huì)有日志的輸出,如下圖:

    如何掌握SpringBoot日志文件

    通過(guò)上述信息我們可以發(fā)現(xiàn):

    • Spring Boot內(nèi)置了日志框架

    • 默認(rèn)情況下,輸出的日志并不是開發(fā)者定義和打印的,那么開發(fā)者怎么在程序中定義打印日志?

    • 日志默認(rèn)是打印在控制臺(tái)上,而控制臺(tái)的日志是不能被保存的, 如何將日志永久的保存下來(lái)?

    3. 自定義日志打印

    開發(fā)者自定義打印日志的實(shí)現(xiàn)步驟:

    • 在程序中得到日志

    • 使用日志對(duì)象的相關(guān)語(yǔ)法輸出要打印的內(nèi)容

    3.1 在程序中得到日志對(duì)象
    private static final Logger log = LoggerFactory.getLogger(UserController.class);

    日志工廠需要將每個(gè)類的類型傳進(jìn)去,這樣我們才能知道日志的歸屬類,才能更方便更直觀的定位到問(wèn)題

    注意:logger對(duì)象屬于org.slf4j包下的,不要導(dǎo)錯(cuò)了

    如何掌握SpringBoot日志文件

    3.2 使用日志對(duì)象打印日志

    日志對(duì)象的打印方法有很多種,我們可以使用info方法來(lái)輸出日志,

    @Controller
    @ResponseBody
    public class UserController {
        private static final Logger log = LoggerFactory.getLogger(UserController.class);
        @RequestMapping("/sayhi")
        public void sayHi() {
            log.trace("trace");
            log.debug("debug");
            log.info("info");
            log.warn("warn");
            log.error("error");
        }
    }

    如何掌握SpringBoot日志文件

    4. 日志級(jí)別

    4.1 日志級(jí)別有什么用?
    • 日志級(jí)別可以幫你篩選出重要的信息,比如設(shè)置日志級(jí)別為error,那么就可以只看到程序的報(bào)錯(cuò)日志了,對(duì)于普通的調(diào)試日志和業(yè)務(wù)日志就可以忽略了。從而節(jié)省開發(fā)者篩選的時(shí)間

    • 日志級(jí)別可以控制不同環(huán)境下,一個(gè)程序是否需要打印日志,如開發(fā)環(huán)境我們需要很詳細(xì)的信息,而生產(chǎn)環(huán)境為了保持性能和安全性就會(huì)輸出少量的日志,而通過(guò)日志級(jí)別可以實(shí)現(xiàn)此類需求

    4.2 日志級(jí)別的分類與使用

    日志級(jí)別分為:

    • trace: 微量,少許的意思,級(jí)別最低

    • debug:需要調(diào)試時(shí)候的關(guān)鍵信息打印

    • info:普通的打印信息(默認(rèn)日志級(jí)別)

    • warn:警告:不影響使用,但需要注意的問(wèn)題

    • error:錯(cuò)誤信息,級(jí)別較高的錯(cuò)誤日志信息

    • fatal:致命的,因?yàn)榇a異常導(dǎo)致程序退出執(zhí)行的事件

    日志級(jí)別的順序:

    如何掌握SpringBoot日志文件

    越往上,接收到的信息就越少,如設(shè)置了warn就只能接收到warn及其上面的級(jí)別

    日志級(jí)別設(shè)置

    logging:
      level:
        root: error

    默認(rèn)日志輸出級(jí)別

    清除掉配置文件當(dāng)中的日志設(shè)置,觀察控制臺(tái)輸出的日志級(jí)別

    得到結(jié)論,日志輸出級(jí)別默認(rèn)是info

    當(dāng)存在局部日志級(jí)別和全局日志級(jí)別設(shè)置,那么當(dāng)訪問(wèn)局部日志時(shí),使用的是局部日志級(jí)別。也就是局部日志優(yōu)先級(jí)高于全局日志的優(yōu)先級(jí)

    5. 日志持久化

    以上的日志都是輸出在控制臺(tái)上,然而生產(chǎn)環(huán)境上咱們需要將日志保存下來(lái),以便出現(xiàn)問(wèn)題之后追溯問(wèn)題,把日志保存下來(lái)的過(guò)程叫做持久化

    想要將日至持久化,只需要在配置文件中指定日志的存儲(chǔ)目錄或者是指定日志保存文件名,Spring Boot就會(huì)將控制臺(tái)的日志寫到相應(yīng)的目錄或文件下

    配置日志文件的保存路徑:

    logging:
      file:
        path: D:\rizhi

    保存的路徑,當(dāng)中包含轉(zhuǎn)義字符方面的設(shè)置我們可以使用這個(gè)/來(lái)作為分割符。

    如果堅(jiān)持使用Windows下的分割符,我們需要使用\轉(zhuǎn)義字符來(lái)轉(zhuǎn)義一下

    配置日志文件的文件名:

    logging:
      file:
        name: D:/rizhi/logger/spring.log

    6. 更簡(jiǎn)單的日志輸出–lombok

    每次使用LoggerFactory.getLogger很繁瑣,且每個(gè)類都添加一遍,也很麻煩。這里的lombok是一種更好的日志輸出方式

    • 添加lombok框架支持

    • 使用@slf4j注解輸出日志

    6.1 添加 lombok 依賴

    首先要安裝一個(gè)插件:

    如何掌握SpringBoot日志文件

    然后再pom.xml頁(yè)面右鍵、

    如何掌握SpringBoot日志文件

    如何掌握SpringBoot日志文件

    如何掌握SpringBoot日志文件

    最后重新添加依賴就可以了

    如何掌握SpringBoot日志文件

    6.2 輸出日志

    使用@Slf4j注解,在程序中使用log對(duì)象即可輸入日志并且只能使用log對(duì)象才能輸出,這是lombok提供的對(duì)象名

    6.3 lombok原理解釋

    lombok 能夠打印?志的密碼就在 target ?錄??,target 為項(xiàng)?最終執(zhí)?的代碼,查看 target ?錄我們可以發(fā)現(xiàn):

    如何掌握SpringBoot日志文件

    這里的@Slf4j注解變成了一個(gè)對(duì)象。

    下面是java程序的運(yùn)行原理:

    如何掌握SpringBoot日志文件

    6.4 lombok更多注解說(shuō)明

    基本注解

    注解作用
    @Getter自動(dòng)添加get方法
    @Setter自動(dòng)添加set方法
    @ToString自動(dòng)添加toString方法
    @EqualsAndHashCode自動(dòng)添加equals和hasCode方法
    @NoArgsConstructor自動(dòng)添加無(wú)參構(gòu)造方法
    @AllArgsConstructor自動(dòng)添加全屬性構(gòu)造方法,順序按照屬性的定義順序
    @NonNull屬性不能為null
    @RequiredArgsConstructor自動(dòng)添加必須屬性的構(gòu)造方法,final + @NonNull的屬性為需

    組合注解:

    注解作用
    @Data@Getter+@Setter+EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor

    日志注解

    注解作用
    @Slf4j添加一個(gè)名為log的對(duì)象

    以上就是關(guān)于“如何掌握SpringBoot日志文件”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI