亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring?Boot日志介紹和配置

 更新時(shí)間:2024年11月06日 09:30:24   作者:2的n次方_  
在程序中,日志對(duì)象通過LoggerFactory獲取,日志框架如SLF4J提供統(tǒng)一API,便于管理和維護(hù),日志級(jí)別分為FATAL、ERROR、WARN、INFO、DEBUG、TRACE,通過配置可細(xì)化日志輸出,日志還可持久化存儲(chǔ)和格式化,使用lombok可簡(jiǎn)化日志代碼的編寫

1. 日志的介紹

在前面的學(xué)習(xí)中,控制臺(tái)上打印出來的一大堆內(nèi)容就是日志,可以幫助我們發(fā)現(xiàn)問題,分析問題,定位問題,除此之外,日志還可以進(jìn)行系統(tǒng)的監(jiān)控,數(shù)據(jù)采集等

2. 日志的使用

在程序中獲取日志對(duì)象需要使用日志工廠 LoggerFactory,然后調(diào)用 getLogger 方法,傳入?yún)?shù)用來標(biāo)識(shí)這個(gè)日志的名稱,這樣可以更清晰的知道是哪個(gè)類輸出的日志

private static Logger logger = LoggerFactory.getLogger(CaptchaController.class);
System.out.println("System:" + code);
logger.info("Logger: " + code);

來看一下日志的格式:

應(yīng)用名稱可以在配置文件中進(jìn)行配置

3. 日志框架的介紹

日志門面就相當(dāng)于是淘寶 APP,日志實(shí)現(xiàn)相當(dāng)于入駐的商家,在使用時(shí)是使用淘寶,真正提供商品的還是商家

也就是使用時(shí)使用 SLF4J,真正實(shí)現(xiàn)功能還是日志實(shí)現(xiàn)的框架

3.1. SLF4J 框架的介紹

SLF4J 就是其他日志框架的門面,相當(dāng)于提供日志服務(wù)的統(tǒng)一 API 接口,并不涉及到具體的日志邏輯實(shí)現(xiàn),而是一個(gè)抽象層,對(duì)日志框架制定的一種規(guī)范、標(biāo)準(zhǔn)、接口。所有 SLF4J 并不能獨(dú)立使用,需要和具體的日志框架配合使用。

如果說不引入 SLF4J 的話

  • 不同的日志框架的 API 接口和配置文件不同,如果多個(gè)日志框架共存,那么就需要維護(hù)多套配置文件
  • 如果要更換日志框架,修改應(yīng)用程序代碼的過程中可能會(huì)出現(xiàn)一些代碼沖突
  • 如果引入了多套第三方框架,也是需要維護(hù)這些配置的

引入門面日志框架之后,應(yīng)用程序和日志框架之間有了統(tǒng)一的 API 接口,此時(shí)應(yīng)用程序只需要維護(hù)一套日志文件配置即可,當(dāng)?shù)讓訉?shí)現(xiàn)框架改變時(shí),也不需要修改應(yīng)用程序代碼

3.2. 外觀模式

外觀模式(門面模式)提供了一個(gè)統(tǒng)一的接口,用來訪問子系統(tǒng)中的其他接口

SLF4J 就是外觀模式的典型應(yīng)用,但不僅僅使用了這一種設(shè)計(jì)模式

接下來以開燈的例子簡(jiǎn)單實(shí)現(xiàn)一下外觀模式:

首先定義一個(gè)接口:

public interface Light {
    void on();
    void off();
}

然后定義兩個(gè)實(shí)現(xiàn)類:

public class LivingRoomLight implements Light{
    private static Logger logger = LoggerFactory.getLogger(LivingRoomLight.class);
    @Override
    public void on() {
        logger.info("打開客廳燈");
    }
    @Override
    public void off() {
        logger.info("打開客廳燈");
    }
}
public class BedroomLight implements Light{
    private static Logger logger = LoggerFactory.getLogger(BedroomLight.class);
    @Override
    public void on() {
        logger.info("打開臥室燈");
    }
    @Override
    public void off() {
        logger.info("打開臥室燈");
    }
}

如果說是之前的實(shí)現(xiàn)模式的話,需要在 Main 方法中去分別創(chuàng)建這兩個(gè)類的對(duì)象,然后調(diào)用方法,通過外觀模式的話,可以創(chuàng)建一個(gè)類,用來實(shí)現(xiàn)之前的過程

public class LightFacade {
    void lightOn(){
        LivingRoomLight livingRoomLight = new LivingRoomLight();
        livingRoomLight.on();
        BedroomLight bedroomLight = new BedroomLight();
        bedroomLight.on();
    }
}

這樣,即使實(shí)現(xiàn)類的方法發(fā)生改變,提供給用戶使用的接口還是不變的,用戶就不用考慮內(nèi)部是怎么實(shí)現(xiàn)的

4. 日志的級(jí)別

4.1. 級(jí)別的分類

日志的級(jí)別從高到低依次為:FATAL、ERROR、WARN、INFO、DEBUG、TRACE。

  • FATAL:致命信息,表示需要立即被處理的系統(tǒng)級(jí)錯(cuò)誤。
  • ERROR:錯(cuò)誤信息,級(jí)別較高的錯(cuò)誤日志信息,但仍然不影響系統(tǒng)的繼續(xù)運(yùn)行。
  • WARN:警告信息,不影響使用,但需要注意的問題。
  • INFO:普通信息,用于記錄應(yīng)用程序正常運(yùn)行時(shí)的一些信息,例如系統(tǒng)啟動(dòng)完成、請(qǐng)求處理完成等。
  • DEBUG:調(diào)試信息,需要調(diào)試時(shí)候的關(guān)鍵信息打印。
  • TRACE:追蹤信息,比 DEBUG 更細(xì)粒度的信息事件(除非有特殊用意,否則請(qǐng)使用 DEBUG 級(jí)別替代)

4.2. 級(jí)別的使用

創(chuàng)建 Logger 之后就可以調(diào)用方法區(qū)打印不同級(jí)別的日志,但是發(fā)現(xiàn)沒有 fatal 級(jí)別的信息,因?yàn)槌霈F(xiàn)這個(gè)問題已經(jīng)很嚴(yán)重了,不用通過日志就可以知道出現(xiàn)問題了

運(yùn)行之后發(fā)現(xiàn) debug 級(jí)別和 trace 級(jí)別的日志沒有打印出來,這是因?yàn)槟J(rèn)配置的日志級(jí)別是 info 級(jí)別的,所以比 info 級(jí)別低的就打印不出來

5. 日志的配置

5.1. 配置日志級(jí)別

可以通過配置日志級(jí)別來設(shè)置

配置之后就可以看到級(jí)別低的日志了

也可以分類配置日志的級(jí)別,指定某個(gè)類的日志級(jí)別顯示

logging:
  level:
    root: info
    com:
      example:
        log:
          controller: trace

5.2. 日志持久化

在上面打印的日志中,如果把 idea 關(guān)了,那么之前打印的日志就沒有了,如果說日志可以存儲(chǔ)到文件中,也就是存儲(chǔ)在硬盤上,就可以做到持久化,這樣出現(xiàn)問題就可以查之前的日志

還是可以通過配置,來實(shí)現(xiàn)日志的持久化

第一種方式是通過配置文件名的方式

配置之后再運(yùn)行的話,就會(huì)創(chuàng)建配置的文件夾和文件名,并且日志也存儲(chǔ)在了文件中

還有一種方式是只設(shè)置路徑

配置之后就會(huì)在設(shè)置的目錄下創(chuàng)建一個(gè) spring.log 文件夾,里面存儲(chǔ)的就是日志信息

5.3. 配置日志文件的分割

如果說所有日志都放在同一個(gè)文件中,那么這個(gè)文件肯定是越來越大的,就需要對(duì)日志文件進(jìn)行分割,日志框架默認(rèn)也設(shè)置了如果超過 10 M 就會(huì)分割

先來設(shè)置為 1KB 進(jìn)行分割

分割之后的文件名也是可以指定的

logback:
  rollingpolicy:
    max-file-size: 1KB
    file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

5.4. 配置日志格式

日志的格式也是可以控制的,

  • % clr (表達(dá)式){顏色} 設(shè)置輸入日志的顏色。
  • % d {${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}} 日期和時(shí)間 -- 精確到毫秒。
  • %5p 顯示日志級(jí)別 ERROR,WARN,INFO,DEBUG,TRACE。
  • % t 線程名。% c 類的全限定名。% M method。% L 為行號(hào)。% thread 線程名稱。% m 或者 % msg 顯示輸出消息。% n 換行符。
  • %5 若字符長(zhǎng)度小于 5,則右邊用空格填充。%-5 若字符長(zhǎng)度小于 5,則左邊用空格填充。%.15 若字符長(zhǎng)度超過 15,截去多余字符。%15.15 若字符長(zhǎng)度小于 15,則右邊用空格填充。若字符長(zhǎng)度超過 15,截去多余字符。
pattern:
  console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
  file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'

6. lombok 簡(jiǎn)化日志輸出

直接使用注解@Slf4j,然后就不用再創(chuàng)建 Logger 的對(duì)象了,直接就可以調(diào)用方法

到此這篇關(guān)于Spring Boot日志介紹和配置的文章就介紹到這了,更多相關(guān)Spring Boot日志配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論