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

Spring Boot日志的打印與持久化詳細解析

 更新時間:2022年07月19日 10:23:48   作者:偷偷敲代碼的青花瓷  
Spring Boot默認使用SLF4J+Logback 記錄日志,并提供了默認配置,即使我們不進行任何額外配,也可以使用SLF4J+Logback進行日志輸出

1. 日志有什么用

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

答案是否定的,寫程序不是買彩票,不能完全靠猜,因此日志對應我們來說,最重要的用途就是排除和定位問題。

除了發(fā)現(xiàn)和定位問題之外,我們還可以通過日志實現(xiàn)以下功能:

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

2. 日志怎么用

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

以上內容就是 Spring Boot 輸出的控制臺日志信息。

通過上述日志信息我們可以發(fā)現(xiàn)以下3個問題:

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

下面我們一起來找尋這些問題的答案。

3. Spring Boot 自定義日志的打印

  • 在一個類中先獲取到打印日志對象(日志框架提供的日志對象,而日志框架默認已經(jīng)集成到 Spring Boot 里了)
  • 使用日志對象提供的方法實現(xiàn)日志的打印

3.1 先獲取到打印日志對象

在程序中獲取日志對象需要使用日志工廠 LoggerFactory,如下代碼所示:

 // 1.先得到日志對象(來自 slf4j)
    private static final Logger log =
            LoggerFactory.getLogger(UserController.class);

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

注意:Logger 對象是屬于 org.slf4j 包下的,不要導入錯誤。

因為 Spring Boot 中內置了日志框架 slf4j,所以 咋們可以直接在程序中調用 slf4j 來輸出日志

3.2 使用日志對象打印日志

日志對象的打印方法有很多,我們可以先使用 info() 方法來輸出日志,如下代碼所示:

// 2.使用日志對象提供的打印方法進行日志打印
        log.trace("我是 trace");
        log.debug("我是 debug");
        log.info("我是 info");
        log.warn("我是 warn");
        log.error("我是 error");

打印效果展示:

3.3 日志格式說明

4. 日志級別

5. 日志持久化(將日志永久的保存到磁盤的某個位置)

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

想要將?志進?持久化,只需要在配置?件中指定?志的存儲?錄或者是指定?志保存?件名之后, Spring Boot 就會將控制臺的?志寫到相應的?錄或?件下了。

設置日志的保存路徑

在配置文件中,輸入如下代碼:

# 設置日志的保存路徑
# 正確設置日志路徑的方式1
logging.file.path=D:/JavaCode/
# 正確設置日志路徑的方式2
logging.file.path=D:\\JavaCode\\

保存后:

注意:

logging.file.path=D:\JavaCode\

這種寫法,Spring Boot 會認為是一個特殊字符,而非目錄,所以日志持久化不會成功。

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

每次都使用 LoggerFactory.getLogger(xxx.class) 很繁瑣,而且每個類都要添加一遍,也很麻煩,這里有種更好的日志輸出方式,使用 lombok 來更簡單的輸出。

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

6.1 添加 lombok 到當前項目

1.在 pom.xml 中先刪除已有的 lombok 依賴

2.下載插件

下載好之后,手動引入 lombok 依賴

6.2 使用 @Slf4j 得到日志對象 log

@Controller
@ResponseBody
@Slf4j // 替代了之前需要通過 LoggerFactory.getLogger 操作
public class UserService {
        @RequestMapping("/sayhi2")
        public void sayHi2() {
                log.trace("我是 trace");
                log.debug("我是 debug");
                log.info("我是 info");
                log.warn("我是 warn");
                log.error("我是 error");
        }
}

控制臺打印結果如下:

總結

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

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

?志級別依次提升,??志界別越?,收到的?志信息也就越少,我們可以通過配置?志的保存名稱或 保存?錄來將?志永久地保存下來。

到此這篇關于Spring Boot日志的打印與持久化詳細解析的文章就介紹到這了,更多相關Spring Boot日志內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 深入理解Java設計模式之中介者模式

    深入理解Java設計模式之中介者模式

    這篇文章主要介紹了JAVA設計模式之中介者模式的的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解
    2021-11-11
  • spring boot中interceptor攔截器未生效的解決

    spring boot中interceptor攔截器未生效的解決

    這篇文章主要介紹了spring boot中interceptor攔截器未生效的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring3?中?RabbitMQ?的使用與常見場景分析

    Spring3?中?RabbitMQ?的使用與常見場景分析

    本文介紹了Spring3中RabbitMQ的使用,涵蓋了RabbitMQ的基本知識、五種模式、數(shù)據(jù)隔離、消費者確認、死信交換機、延遲功能、消息堆積解決方法、高可用性以及消息重復消費問題的解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • thymeleaf中前后端數(shù)據(jù)交互方法匯總

    thymeleaf中前后端數(shù)據(jù)交互方法匯總

    這篇文章主要介紹了thymeleaf中前后端數(shù)據(jù)交互小結,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-07-07
  • 詳解SpringSecurity中的Authentication信息與登錄流程

    詳解SpringSecurity中的Authentication信息與登錄流程

    這篇文章主要介紹了SpringSecurity中的Authentication信息與登錄流程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Maven方式構建SpringBoot項目的實現(xiàn)步驟(圖文)

    Maven方式構建SpringBoot項目的實現(xiàn)步驟(圖文)

    Maven是一個強大的項目管理工具,可以幫助您輕松地構建和管理Spring Boot應用程序,本文主要介紹了Maven方式構建SpringBoot項目的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java開發(fā)崗位面試被問到泛型怎么辦

    Java開發(fā)崗位面試被問到泛型怎么辦

    泛型在java中有很重要的地位,在面向對象編程及各種設計模式中有非常廣泛的應用。java泛型知識點也是Java開發(fā)崗位必問的一個話題,今天小編就給大家普及下Java泛型常見面試題,感興趣的朋友一起看看吧
    2021-07-07
  • java設計模式Ctrl?C和Ctrl?V的原型模式詳解

    java設計模式Ctrl?C和Ctrl?V的原型模式詳解

    這篇文章主要為大家介紹了java設計模式Ctrl?C和Ctrl?V的原型模式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 詳解在spring boot中配置多個DispatcherServlet

    詳解在spring boot中配置多個DispatcherServlet

    本篇文章主要介紹了詳解在spring boot中配置多個DispatcherServlet,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • 在Java Spring框架中使用的設計模式有哪些

    在Java Spring框架中使用的設計模式有哪些

    面試中常會被問道Spring框架使用了哪些設計模式?關于這個問題本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論

上高县| 太仆寺旗| 福清市| 长丰县| 琼海市| 汽车| 安塞县| 茂名市| 泰和县| 自治县| 桃园县| 黄石市| 南投县| 宁化县| 确山县| 济宁市| 登封市| 永宁县| 乌拉特前旗| 锡林郭勒盟| 邻水| 马边| 扎鲁特旗| 绥芬河市| 佳木斯市| 诸暨市| 平顺县| 彰化县| 纳雍县| 吉木乃县| 东至县| 定州市| 博兴县| 盘锦市| 噶尔县| 庄浪县| 临夏市| 封丘县| 安乡县| 会昌县| 府谷县|