JAVA-springboot log日志

SpringBoot從入門到精通-第8章 日志的操作

一、Spring Boot默認的日志框架

SpringBoot支持很多種日志框架,通常情況下,這些日志框架都是由一個日志抽象層和一個日志實現層搭建而成的,日志抽象層是為記錄日志提供的一套標準且規范的框架,其作用是為記錄日志提供接口,日志實現層是由日志抽象層實現的框架。
在SpringBoot中,常見的日志抽象層由jcl、slf4j、jboos-logging等。常見的日志實現層由log4j、jul、log4j2、logback等。SpringBoot默認使用的抽象層是slf4j,默認使用的日志實現層是logback。

二、打印日志

在使用slf4j打印日志時,需要創建日志對象,創建日志對象的語法如下:

Logger log = LoggerFactory.getLogger(所在類.class);

例如:在TestController類例創建日志對象,那么getLogger()方法的參數就要寫成TestController.class,實例代碼如下

package com.example._20250605springboot_log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;//import java.util.logging.Logger;@RestController
public class TestController {
//private static final Logger log = LoggerFactory.getLogger(getClass());
Logger log = LoggerFactory.getLogger(TestController.class);
@RequestMapping("/index")public String index(String val1,String val2){log.info("This is index");
//    log.info("val1={},val2={}",val1,val2);log.info("val1="+val1+"----val2="+val2);return "";
}
}

運行程序,訪問http://localhost:8080/index,控制臺輸出

2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : This is index
2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : val1=null----val2=null
2025-06-07T09:10:55.458+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-7] c.e._.TestController                     : This is index
2025-06-07T09:10:55.459+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-7] c.e._.TestController                     : val1=null----val2=null

三、解讀日志

2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : This is index

解讀:
2025-06-07T08:52:49.578+08:00 : 打印日志具體的時間到毫秒級
INFO :打印日志的級別
3140 :當前項目的進程編號(PID)
“—” : 分隔符,五實際意義
[20250605springboot_log] [nio-8080-exec-3] :打印日志的線程名稱
c.e._.TestController : 日志是由項目的哪個類打印的,這里由于包名有點長,省略寫法
This is index : 輸出的信息

四、保存日志

4.1保存日志文件的生成位置
在application.properties配置文件中配置:

logging.file.path=.

點表示項目位置的當前目錄下,且日志名為spring。可以自定義日志文件位置
在這里插入圖片描述
在這里插入圖片描述

4.2指定日志文件的生成名稱
在application.properties配置文件中配置:

logging.file.name=${logging.file.path}\\test.log

4.3為日志文件添加約束
指定日志文件的最大保存天數
在application.properties配置文件中配置:

logging.logback.rollingpolicy.max-history=2

指定日志文件的最大容量
在application.properties配置文件中配置:

logging.logback.rollingpolicy.max-file-size=2KB

指定歸檔文件的名稱格式
默認

${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz

啟動項目自動壓縮日志文件
在application.properties配置文件中配置:

logging.logback.rollingpolicy.clean-history-on-start=true

啟動項目后遍歷打印很多內容驗證日志文件壓縮和大小
在這里插入圖片描述

五、調整日志

5.1設置日志級別

  • ERROR
  • WARN
  • INFO
  • DEBUG
  • TRACE
    ERROR > WARN > INFO > DEBUG > TRACE

在application.properties配置文件中配置:

logging.level.com.example._20250605springboot_log.TestController=debug

5.2設置日志格式

  • %date{yyyy-MM-dd HH:mm:ss.SSS} 時間
  • %5level 日志級別
  • ${PID} 進程號
  • %15.15t %t表示線程名 15.15表示最短或最長為15個字符
  • %-40.40logger{39}
  • %m 具體的內容
  • %n 換行符

設置日志文件格式
在application.properties配置文件中配置:

logging.pattern.file=

設置控制臺打印格式
在application.properties配置文件中配置:

logging.pattern.console=

六、logback.xml配置

logback.xml配置文件和application.properties配置文件都被存儲在resource目錄下,logback.xml的優先級高于application.properties。都存在,會采用logback.xml的配置。

七、遇到的問題

1、import導入logger類的時候要注意導入的是下面的路徑

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

剛開始創建類直接引用Logger log 時候springboot會自動導入logger路徑的類,但是程序提示錯誤“不兼容的類型”,自動導入的路徑為:

import java.util.logging.Logger;

在這里插入圖片描述
然后修改了上面的導入路徑為:

import org.slf4j.Logger;

就可以正常使用了。

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

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

相關文章

Vue 渲染 Markdown 文件完全指南

前言 大家好,我是一諾,今天分享的是vue中渲染markdown文件。這是一個常見的需求,比如用戶隱私協議頁、技術說明等文檔頁面~ 本文將詳細介紹如何在 Vue 中渲染 Markdown 文件,并美化代碼塊的顯示效果。 基礎概念 什么是 Markdo…

Science Robotics:UCLA 賀曦敏團隊綜述自主軟體機器人

在機器人中實現類似生命的自主性一直是研究的方向,但目前大多數軟體機器人仍依賴外部刺激操控來產生持續運動。為了實現能夠自我調節感知 、 決策和驅動的自主物理智能(autonomous physical intelligence,API),一種有前…

基于LangChain構建高效RAG問答系統:向量檢索與LLM集成實戰

基于LangChain構建高效RAG問答系統:向量檢索與LLM集成實戰 在本文中,我將詳細介紹如何使用LangChain框架構建一個完整的RAG(檢索增強生成)問答系統。通過向量檢索獲取相關上下文,并結合大語言模型,我們能夠…

【Java學習筆記】SringBuffer類(重點)

StringBuffer(重點) 1. 基本介紹 (1)StringBuffer是可變的字符序列,可以對字符串內容驚醒增刪 (2)很多方法喝String相同,但StringBuffer可變長度 (3)Strin…

計算機網絡領域所有CCF-A/B/C類期刊匯總!

本期小編統計了【計算機網絡】領域CCF推薦所有期刊的最新影響因子,分區、年發文量以及投稿經驗,供大家參考! CCF-A類 1 IEEE Journal on Selected Areas in Communications 【影響因子】13.8 【期刊分區】JCR1區,中科院1區TOP …

AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用)

環境: Ubuntu20.04 WSL2 問題描述: AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用) 解決方案: 打開管家大模型 1.運行大模型在cmd下輸入: ollama run qwen2.5-3bnsfwny運行管家 數字人運行腳本&#xff…

【python深度學習】Day 47 注意力熱圖可視化

知識點:熱力圖 作業:對比不同卷積層熱圖可視化的結果 一、概念 為了方便觀察輸出,將特征圖進行可視化。特征圖本質就是不同的卷積核的輸出,淺層指的是離輸入圖近的卷積層,淺層卷積層的特征圖通常較大,而深層…

C#語音識別:使用Whisper.net實現語音識別

C#語音識別:使用Whisper.net實現語音識別 在當今數字化時代,語音識別技術已廣泛應用于智能助手、語音轉文字、會議記錄等眾多領域。對于 C# 開發者而言,如何快速、高效地實現語音識別功能呢?今天,我們就來介紹一個強大…

開源分享|適合初創商家的餐飲系統,基于thinkphp8+element-plus

一、項目介紹 三勾餐飲點餐連鎖版系統是一個基于thinkphp8element-plusuniapp打造的面向開發的小程序商城的全面解決方案,旨在為連鎖餐飲企業提供高效的點餐與管理服務。該系統支持多端應用發布,包括微信小程序、H5、安卓及iOS平臺,實現數據…

rec_pphgnetv2完整代碼學習(一)

rec_pphgnetv2是paddleocr_v5中的重要改進,因此對其完整代碼進行學習十分之有必要。 一、IdentityBasedConv1x1 這段代碼定義了 IdentityBasedConv1x1 類,它是 PaddleOCRv5 中 rec_pphgnetv2 模型的關鍵改進之一。該層通過將恒等映射(Ident…

vue3+dify從零手擼AI對話系統

vue3dify從零手擼AI對話系統 前言 近年來,人工智能技術呈現爆發式增長,其應用已深度滲透至各行各業。甚至家里長輩們也開始借助AI工具解決日常問題。作為程序員群體,我們更應保持技術敏銳度,緊跟這波浪潮。 回溯求學時期&#xf…

robot_lab train的整體邏輯

Go2機器人推理(Play)流程詳細分析 概述 本文檔詳細分析了使用命令 python scripts/rsl_rl/base/play.py --task RobotLab-Isaac-Velocity-Rough-Unitree-Go2-v0 進行Go2機器人推理的完整流程,基于實際的代碼實現,包括模型加載、環境配置調整、推理循環…

Python Day45

Task: 1.tensorboard的發展歷史和原理 2.tensorboard的常見操作 3.tensorboard在cifar上的實戰:MLP和CNN模型 效果展示如下,很適合拿去組會匯報撐頁數: 作業:對resnet18在cifar10上采用微調策略下,用tens…

MySQL SQL 優化:從 INSERT 到 LIMIT 的實戰與原理

在數據庫驅動的現代應用中,SQL 查詢的性能直接決定了用戶體驗和系統效率。本文將深入探討 MySQL (特別是 InnoDB 存儲引擎)中常見的 SQL 性能瓶頸,并結合實際案例,詳細剖析從數據插入到復雜分頁查詢的優化策略與底層實…

SQL 基礎入門

SQL 基礎入門 SQL(全稱 Structured Query Language,結構化查詢語言)是用于操作關系型數據庫的標準語言,主要用于數據的查詢、新增、修改和刪除。本文面向初學者,介紹 SQL 的基礎概念和核心操作。 1. 常見的 SQL 數據…

HTTP 請求協議簡單介紹

目錄 常見的 HTTP 響應頭字段 Java 示例代碼:發送 HTTP 請求并處理響應 代碼解釋: 運行結果: 文件名: 總結: HTTP(HyperText Transfer Protocol)是用于客戶端與服務器之間通信的協議。它定…

《100天精通Python——基礎篇 2025 第5天:鞏固核心知識,選擇題實戰演練基礎語法》

目錄 一、踏上Python之旅二、Python輸入與輸出三、變量與基本數據類型四、運算符五、流程控制 一、踏上Python之旅 1.想要輸出 I Love Python,應該使用()函數。 A.printf() B.print() C.println() D.Print() 在Python中想要在屏幕中輸出內容,應該使用print()函數…

求解一次最佳平方逼近多項式

例 設 f ( x ) 1 x 2 f(x)\sqrt{1x^2} f(x)1x2 ?,求 [ 0 , 1 ] [0,1] [0,1]上的一個一次最佳平方逼近多項式。 解 : d 0 ∫ 0 1 1 x 2 d x 1 2 ln ? ( 1 2 ) 2 2 ≈ 1.147 d_0\int_{0}^{1}\sqrt{1x^2}dx\frac{1}{2}\ln(1\sqrt{2})\frac{\sqrt…

在Ubuntu上使用 dd 工具制作U盤啟動盤

在Ubuntu上使用 dd 工具制作U盤啟動盤 在Linux系統中,dd 是一個功能強大且原生支持的命令行工具,常用于復制文件和轉換數據。它也可以用來將ISO鏡像寫入U盤,從而創建一個可啟動的操作系統安裝盤。雖然圖形化工具(如 Startup Disk…

如何理解OSI七層模型和TCP/IP四層模型?HTTP作為如何保存用戶狀態?多服務器節點下 Session方案怎么做

本篇概覽: OSI 七層模型是什么?每一層的作用是什么?TCP/IP四層模型和OSI七層模型的區別是什么? HTTP 本身是無狀態協議,HTTP如何保存用戶狀態? 能不能具體說一下Cookie的工作原理、生命周期、作用域?使用…