欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文掌握Spring?Boot?日志文件

 更新時間:2023年03月03日 15:07:39   作者:ζ◇十點半就睡覺  
日志是程序的重要組成部分,日志對于我們來說,最主要的用途就是排除和定位問題,這篇文章主要介紹了Spring?Boot?日志文件,需要的朋友可以參考下

SpringBoot日志文件

1. 日志有什么用

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

日志對于我們來說,最主要的用途就是排除和定位問題。除了發(fā)現(xiàn)和定位問題之外,我們還可以通過日志實現(xiàn)以下功能:

  • 記錄用戶登錄日志,方便分析用戶是正常登錄,還是惡意破解用戶
  • 記錄系統(tǒng)的操作日志,方便數(shù)據(jù)恢復和定位操作人
  • 記錄程序的執(zhí)行時間,方便以后優(yōu)化程序提供數(shù)據(jù)支持

2. 日志怎么用

Spring Boot項目在啟動的時候默認就會有日志的輸出,如下圖:

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

  • Spring Boot內(nèi)置了日志框架
  • 默認情況下,輸出的日志并不是開發(fā)者定義和打印的,那么開發(fā)者怎么在程序中定義打印日志?
  • 日志默認是打印在控制臺上,而控制臺的日志是不能被保存的, 如何將日志永久的保存下來?

3. 自定義日志打印

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

  • 在程序中得到日志
  • 使用日志對象的相關(guān)語法輸出要打印的內(nèi)容

3.1 在程序中得到日志對象

private static final Logger log = LoggerFactory.getLogger(UserController.class);

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

注意:logger對象屬于org.slf4j包下的,不要導錯了

3.2 使用日志對象打印日志

日志對象的打印方法有很多種,我們可以使用info方法來輸出日志,

@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");
    }
}

4. 日志級別

4.1 日志級別有什么用?

  • 日志級別可以幫你篩選出重要的信息,比如設(shè)置日志級別為error,那么就可以只看到程序的報錯日志了,對于普通的調(diào)試日志和業(yè)務日志就可以忽略了。從而節(jié)省開發(fā)者篩選的時間
  • 日志級別可以控制不同環(huán)境下,一個程序是否需要打印日志,如開發(fā)環(huán)境我們需要很詳細的信息,而生產(chǎn)環(huán)境為了保持性能和安全性就會輸出少量的日志,而通過日志級別可以實現(xiàn)此類需求

4.2 日志級別的分類與使用

日志級別分為:

  • trace: 微量,少許的意思,級別最低
  • debug:需要調(diào)試時候的關(guān)鍵信息打印
  • info:普通的打印信息(默認日志級別)
  • warn:警告:不影響使用,但需要注意的問題
  • error:錯誤信息,級別較高的錯誤日志信息
  • fatal:致命的,因為代碼異常導致程序退出執(zhí)行的事件

日志級別的順序:

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

日志級別設(shè)置

logging:
  level:
    root: error

默認日志輸出級別

清除掉配置文件當中的日志設(shè)置,觀察控制臺輸出的日志級別

得到結(jié)論,日志輸出級別默認是info

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

5. 日志持久化

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

想要將日至持久化,只需要在配置文件中指定日志的存儲目錄或者是指定日志保存文件名,Spring Boot就會將控制臺的日志寫到相應的目錄或文件下

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

logging:
  file:
    path: D:\rizhi

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

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

配置日志文件的文件名:

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

6. 更簡單的日志輸出–lombok

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

  • 添加lombok框架支持
  • 使用@slf4j注解輸出日志

6.1 添加 lombok 依賴

首先要安裝一個插件:

然后再pom.xml頁面右鍵、

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

6.2 輸出日志

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

6.3 lombok原理解釋

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

這里的@Slf4j注解變成了一個對象。

下面是java程序的運行原理:

6.4 lombok更多注解說明

基本注解

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

組合注解:

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

日志注解

注解作用
@Slf4j添加一個名為log的對象

7. 總結(jié)

日志是程序員中的重要組成部分,使用日志可以快速的發(fā)現(xiàn)和定位問題,Spring Boot提供了日志框架,默認情況下使用的是info日志級別將日志輸出到控制臺的。我們可以通過lombok提供的@Slf4j注解和log對象快速的打印自定義日志,日志包含了6個級別:

  • trace:微量,少許的意思,級別最低
  • debug:需要調(diào)試的時候的關(guān)鍵信息打印
  • info:普通的打印信息
  • warn:警告,不影響使用,但需要注意的問題
  • error:錯誤信息,級別較高的錯誤日志信息
  • fatal:致命的,因為代碼異常導致程序退出執(zhí)行的事件

日志級別依次提升,而日志級別越高,收到的日志信息也就越少,我們可以通過配置日志的保存域名或保存目錄來將日志永久的保存下來

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

相關(guān)文章

  • Java中的ThreadLocal線程池原理

    Java中的ThreadLocal線程池原理

    這篇文章主要介紹了Java中的ThreadLocal線程池原理,ThreadLocal提供了線程的局部變量(或本地變量),它可以保證訪問到的變量屬于當前線程,每個訪問這種變量的線程(通過它的get或set方法)都有自己的、獨立初始化的變量副本,需要的朋友可以參考下
    2023-11-11
  • springboot如何獲取登錄用戶的個人信息

    springboot如何獲取登錄用戶的個人信息

    在Spring Boot中,獲取登錄用戶的個人信息通常需要使用Spring Security框架來進行身份認證和授權(quán),這篇文章主要介紹了springboot獲取登錄用戶的個人信息,需要的朋友可以參考下
    2023-05-05
  • 新手小白學JAVA IDEA下載使用手冊全集

    新手小白學JAVA IDEA下載使用手冊全集

    IDEA的每一個方面都是為了最大限度地提高開發(fā)人員的工作效率而設(shè)計的,它的智能編碼輔助和人機工程學設(shè)計會讓開發(fā)過程變得愉悅且高效,今天給大家分享新手小白學JAVA IDEA下載使用手冊全集,對idea新手使用相關(guān)知識感興趣的朋友跟隨小編一起學習吧
    2021-05-05
  • IDEA2023常用配置指南(JDK/系統(tǒng)設(shè)置等常用配置)

    IDEA2023常用配置指南(JDK/系統(tǒng)設(shè)置等常用配置)

    idea很強大,但是初次安裝默認的有很多設(shè)置并不是滿足我們開發(fā)的需要,下面這篇文章主要給大家介紹了關(guān)于IDEA2023常用配置(JDK/系統(tǒng)設(shè)置等常用配置)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • 使用Maven 搭建 Spring MVC 本地部署Tomcat的詳細教程

    使用Maven 搭建 Spring MVC 本地部署Tomcat的詳細教程

    這篇文章主要介紹了使用Maven 搭建 Spring MVC 本地部署Tomcat,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 淺談java中守護線程與用戶線程

    淺談java中守護線程與用戶線程

    本篇文章主要介紹了淺談java中守護線程與用戶線程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Spring Boot Admin郵件警報整合過程解析

    Spring Boot Admin郵件警報整合過程解析

    這篇文章主要介紹了Spring Boot Admin郵件警報整合過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot監(jiān)聽器的實現(xiàn)示例

    SpringBoot監(jiān)聽器的實現(xiàn)示例

    在SpringBoot中,你可以使用監(jiān)聽器來響應特定的事件,本文主要介紹了SpringBoot監(jiān)聽器的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 一文帶你了解如何正確使用MyBatisPlus

    一文帶你了解如何正確使用MyBatisPlus

    在本篇文章中,我們獎通過?MyBatis?Plus?來對一張表進行?CRUD?操作,來看看是如何簡化我們開發(fā)的。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-12-12
  • Java冒泡排序(Bubble Sort)實例講解

    Java冒泡排序(Bubble Sort)實例講解

    冒泡排序的原理:假設(shè)要求的數(shù)組是正序,兩兩進行比較,如果前一個書比后一個數(shù)小,位置不變。如果前一個數(shù)比后一個數(shù)大,位置互換,再跟后一個數(shù)進行比較,直到最后。就是逐步把大數(shù)送到最后,下面來個實例給大家看看
    2013-11-11

最新評論