【后端開發】Spring日志

文章目錄

  • Spring日志
    • 日志作用
    • 日志測試
    • 日志信息
    • 日志級別
    • 日志配置
      • 配置日志級別
      • 日志持久化
      • 日志文件分割
    • 注解的使用

Spring日志

日志作用

  1. 系統監控:可以通過日志記錄這個系統的運行狀態,對數據進行分析,設置不同的規則,超過閾值時進行報警。
  2. 數據采集:數據采集是一個比較大的范圍,采集的數據可以作用在很多方面,比如數據統計,推薦排序等。
  3. 日志審計:通過系統日志分析,可以判斷一些非法攻擊,非法調用,以及系統處理過程中的安全隱患。

日志測試

SpringBoot 內置了日志框架 Slf4j,可以直接在程序中調用 Slf4j 來輸出日志。

@RequestMapping("/logger")
@RestController
public class LoggerController {private static Logger logger = LoggerFactory.getLogger(LoggerController.class);@RequestMapping("/print")public String print() {logger.info("使用日志對象打印日志");System.out.println("使用sout打印日志");return "success";}
}

日志信息

在這里插入圖片描述

日志級別

日志級別代表著日志信息對應問題的嚴重性,目的是為了更快的篩選符合目標的日志信息。
日志的級別從高到低依次為:FATAL、ERROR、WARN、INFO、DEBUG、TRACE

1.FATAL:致命信息,表示需要立即被處理的系統級錯誤
2.ERROR:錯誤信息,級別較高的錯誤日志信息,但仍然不影響系統的繼續運行
3.WARN:警告信息,不影響使用,但需要注意的問題(以上的錯誤如果長期不處理,會引起故障)
4.INFO:普通信息,用于記錄應用程序正常運行時的一些信息
5.DEBUG:調試信息,需要調試時候的關鍵信息打印
6.TRACE:追蹤信息,比DEBUG更細粒度的信息事件(除非有特殊用意,否則請使用DEBUG級別替代)

注意:日志級別通常和測試人員的Bug級別沒有關系,日志級別是開發人員自己設置的,開發人員根據自己的理解來判斷該信息的重要程度。

    @RequestMapping("/level")public String levelPrint() {logger.trace("=======trace級別日志=======");logger.debug("=======debug級別日志=======");logger.info("=======info級別日志=======");logger.warn("=======warn級別日志=======");logger.error("=======error級別日志=======");return "success";}

此時控制臺只打印info,warn和error級別的日志,不會打印出debug,trace級別的日志,這與日志級別的配置有關,日志的輸出級別默認是 info 級別,所以只會打印大于等于此級別的日志,也就是info,warn和error。

日志配置

配置日志級別

整個程序(root)日志的輸出級別設置為debug級別。

logging:level:root: debug

這樣控制臺打印出來的日志信息就包括debug級別以及debug以上級別的信息,包括info,warn,error。

日志持久化

以上的日志都是輸出在控制臺上的,然而在線上環境中,需要把日志保存下來,以便出現問題之后追 溯問題,把日志保存下來就叫持久化。日志持久化有兩種方式:

  1. 配置日志文件名
logging:file:name: logger/captcha.log

日志信息將存儲到文件主目錄下的logger的captcha.log文件中。

  1. 配置日志的存儲目錄
    這種方式只能設置日志的路徑,文件名為固定的spring.log。
logging:file:name: logger

logging.file.name 和 logging.file.path 都配置的情況下,僅 logging.file.name 有用。

日志文件分割

如果日志都放在一個文件中,隨著項目的運行,日志文件會越來越大,需要對日志文件進行分割。日志框架考慮到了這一點,會自動配置。
默認日志文件超過10M就進行分割,并且設定其命名格式。

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

注解的使用

lombok提供 @Slf4j 會提供一個日志對象 log,實際工作中直接使用就可以。

@Slf4j
@RequestMapping("/logger2")
@RestController
public class LoggerController2 {@RequestMapping("/log")public String print() {log.info("使用日志對象打印日志");System.out.println("使用sout打印日志");return "success";}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索大語言模型(LLM):Transformer 與 BERT從原理到實踐

Transformer 與 BERT:從原理到實踐 前言一、背景介紹二、核心公式推導1. 注意力機制(Attention Mechanism)2. 多頭注意力機制(Multi-Head Attention)3. Transformer 編碼器(Transformer Encoder&#xff09…

計算機網絡八股——HTTP協議與HTTPS協議

目錄 HTTP1.1簡述與特性 1. 報文清晰易讀 2. 靈活和易于擴展 3. ?狀態 Cookie和Session 4. 明?傳輸、不安全 HTTP協議發展過程 HTTP/1.1的不足 HTTP/2.0 HTTP/3.0 HTTPS協議 HTTP協議和HTTPS協議的區別 HTTPS中的加密方式 HTTPS中建立連接的方式 前言&#xff…

QML中的3D功能--入門開發

Qt Quick 提供了強大的 3D 功能支持,主要通過 Qt 3D 模塊實現。以下是 QML 中開發 3D 應用的全面指南。 1. 基本配置 環境要求 Qt 5.10 或更高版本(推薦 Qt 6.x) 啟用 Qt 3D 模塊 支持 OpenGL 的硬件 項目配置 在 .pro 文件中添加: QT += 3dcore 3drender 3dinput 3dex…

Git合并分支的兩種常用方式`git merge`和`git cherry-pick`

Git合并分支的兩種常用方式git merge和git cherry-pick 寫在前面1. git merge用途工作方式使用git命令方式合并使用idea工具方式合并 2. git cherry-pick用途工作方式使用git命令方式合并使用idea工具方式合并 3. 區別總結 寫在前面 一般我們使用git合并分支常用的就是git mer…

Web三漏洞學習(其三:rce漏洞)

靶場:NSSCTF 三、RCE漏洞 1、概述 在Web應用開發中會讓應用調用代碼執行函數或系統命令執行函數處理,若應用對用戶的輸入過濾不嚴,容易產生遠程代碼執行漏洞或系統命令執行漏洞 所以常見的RCE漏洞函數又分為代碼執行函數和系統命令執行函數…

從零開始:Python運行環境之VSCode與Anaconda安裝配置全攻略 (1)

從零開始:Python 運行環境之 VSCode 與 Anaconda 安裝配置全攻略 在當今數字化時代,Python 作為一種功能強大且易于學習的編程語言,被廣泛應用于數據科學、人工智能、Web 開發等眾多領域。為了順利開啟 Python 編程之旅,搭建一個穩…

從FPGA實現角度介紹DP_Main_link主通道原理

DisplayPort(簡稱DP)是一個標準化的數字式視頻接口標準,具有三大基本架構包含影音傳輸的主要通道(Main Link)、輔助通道(AUX)、與熱插拔(HPD)。 Main Link:用…

嵌入式軟件--stm32 DAY 2

大家學習嵌入式的時候,多多學習用KEIL寫代碼,雖然作為編譯器,大家常用vscode等常用工具關聯編碼,但目前keil仍然是主流工具之一,學習掌握十分必要。 1.再次創建項目 1.1編譯器自動生成文件 1.2初始文件 這樣下次創建新…

游戲引擎學習第234天:實現基數排序

回顧并為今天的內容設定背景 我們今天繼續進行排序的相關,雖然基本已經完成了,但還是想收尾一下,讓整個流程更完整。其實這次排序只是個借口,主要是想順便聊一聊一些計算機科學的知識點,這些內容在我們項目中平時不會…

計算機網絡——常見的網絡攻擊手段

什么是XSS攻擊,如何避免? XSS 攻擊,全稱跨站腳本攻擊(Cross-Site Scripting),這會與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,因此有人將跨站腳本攻擊縮寫為XSS。它指的是惡意攻擊者往Web頁面…

Agent的九種設計模式 介紹

Agent的九種設計模式 介紹 一、ReAct模式 原理:將推理(Reasoning)和行動(Acting)相結合,使Agent能夠在推理的指導下采取行動,并根據行動的結果進一步推理,形成一個循環。Agent通過生成一系列的思維鏈(Thought Chains)來明確推理步驟,并根據推理結果執行相應的動作,…

LeetCode 熱題 100:回溯

46. 全排列 給定一個不含重復數字的數組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 示例 1: 輸入:nums [1,2,3] 輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 輸入&#xff…

cJSON_Print 和 cJSON_PrintUnformatted的區別

cJSON_Print 和 cJSON_PrintUnformatted 是 cJSON 庫中用于將 cJSON 對象轉換為 JSON 字符串的兩個函數,它們的區別主要在于輸出的格式: 1. cJSON_Print 功能:將 cJSON 對象轉換為格式化的 JSON 字符串。 特點: 輸出的 JSON 字符…

A股周度復盤與下周策略 的deepseek提示詞模板

以下是反向整理的股票大盤分析提示詞模板,采用結構化框架數據占位符設計,可直接套用每周市場數據: 請根據一下markdown格式的模板,幫我檢索整理并輸出本周股市復盤和下周投資策略 【A股周度復盤與下周策略提示詞模板】 一、市場…

Linux下使用C++獲取硬件信息

目錄 方法獲取CPU信息:讀取"/proc/cpuinfo"文件獲取磁盤信息:讀取"/proc/diskstats"文件獲取BIOS信息有兩種方法:1、讀取文件;2、使用dmidecode命令獲取主板信息有兩種方法:1、讀取文件&#xff1…

BootStrap:進階使用(其二)

今天我要講述的是在BootStrap中第二篇關于進一步使用的方法與代碼舉例; 分頁: 對于一些大型網站而言,分頁是一個很有必要的存在,如果當數據內容過大時,則需要分頁來分擔一些,這可以使得大量內容能整合并全面地展示&a…

【技術派后端篇】技術派中的白名單機制:基于Redis的Set實現

在技術派社區中,為了保證文章的質量和社區的良性發展,所有發布的文章都需要經過審核。然而,并非所有作者的文章都需要審核,我們通過白名單機制來優化這一流程。本文將詳細介紹技術派中白名單的實現方式,以及如何利用Re…

TRAE.AI 國際版本

國際版下載地址: https://www.trae.ai/https://www.trae.ai/ 國際版本優勢:提供更多高校的AI助手模型 Claude-3.5-Sonnet Claude-3.7-Sonnet Gemini-2.5-Pro GPT-4.1 GPT-40 DeepSeek-V3-0324DeepSeek-V3DeepSeek-Reasoner(R1)

關于支付寶網頁提示非官方網頁

關于支付寶網站提示 非官方網站 需要找官方添加白名單 下面可以直接用自己的郵箱去發送申請 支付寶提示“非支付寶官方網頁,請確認是否繼續訪問”通常是因為支付寶的安全機制檢測到您訪問的頁面不是支付寶官方頁面,這可能是由于域名或頁面內容不符合支…

【今日三題】打怪(模擬) / 字符串分類(字符串哈希) / 城市群數量(dfs)

??個人主頁&#xff1a;小羊 ??所屬專欄&#xff1a;每日兩三題 很榮幸您能閱讀我的文章&#xff0c;誠請評論指點&#xff0c;歡迎歡迎 ~ 目錄 打怪(模擬)字符串分類(字符串哈希)城市群數量(dfs) 打怪(模擬) 打怪 #include <iostream> using namespace std;int …