SpringBoot深入了解日志的使用
1. 日志的作用
日志是程序的重要組成部分,在程序報錯的時候,如果我們不看日志,是很難排查出錯誤的,除非你真的是很有經(jīng)驗.所以日志最主要的作用就是排除和定位問題.
日志提供的功能:
- 記錄?戶登錄?志,?便分析?戶是正常登錄還是惡意破解?戶。
- 記錄系統(tǒng)的操作?志,?便數(shù)據(jù)恢復(fù)和定位操作?。
- 記錄程序的執(zhí)?時間,?便為以后優(yōu)化程序提供數(shù)據(jù)?持
2. 日志怎么用
在我們啟動 SpringBoot 項目的時候就會輸出日志:
3. 自定義日志打印
主要分兩個步驟:
在一個類中先獲得打印日志對象(日志框架提供的日志對象,而日志框架默認(rèn)已經(jīng)集成到 SpringBoot 里了)使用日志對象提供的方法實現(xiàn)日志的打印
3.1 得到日志對象
得到日志對象 Logger ,它來自于 slf4j,不要導(dǎo)錯了包,在程序中獲取?志對象需要使??志?? LoggerFactory
3.2 使用日志對象提供的方法打印日志
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @ResponseBody public class UserController { //1. 先得到日志對象(來自 slf4j) private static final Logger log = LoggerFactory.getLogger(UserController.class); //設(shè)置當(dāng)前的類型 @RequestMapping("/sayhi") public void sayHi(){ //2. 使用日志對象提供的打印方法進行日志打印 log.trace("我是 trace"); log.debug("我是 debug"); log.info("我是 info"); log.warn("我是 warn"); log.error("我是 error"); } }
有些沒打印,因為他只會打印跟他同級別的或者比他級別高的日志,他這里默認(rèn)是 info 級別.
3.3 日志格式說明
4. 日志級別
反饋一些需要的日志,并不需要把所有的都打印出來
就像是如果你是一家 2 萬人的公司的老板,需要每天看他們的反饋信息,難道每個人都看嗎?這顯然看不完,你只需要看一些領(lǐng)頭的就行…
4.1 日志級別分類
日志級別分為:
trace
: 微量,少許的意思(級別最低)debug
: 調(diào)試日志info
: 普通信息日志warn
: 警告日志error
: 錯誤日志fatal
: 致命的日志(系統(tǒng)輸出的日志,不能自定義打印)
日志級別的順序:
越往上接收到的消息就越少。
4.2 日志級別的配置
?志級別配置只需要在配置?件中設(shè)置“logging.level”
配置項即可:
# 設(shè)置全局的日志級別
logging.level.root=warn
# 設(shè)置局部文件夾的日志級別
logging.level.com.example.demo.UserController=trace
之前的 info 級別日志就沒打印了.
注意:當(dāng)存在局部日志級別和全局的日志級別設(shè)置時,那么當(dāng)訪問局部日志時,使用的是局部日志級別.也就是 局部日志優(yōu)先級 > 全局日志級別
5. 日志持久化
以上的?志都是輸出在控制臺上的,然?在?產(chǎn)環(huán)境上咱們需要將?志保存下來,以便出現(xiàn)問題之后追溯問題,把?志保存下來的過程就叫做持久化。
日志持久化(將日志永久的保存到磁盤的某個位置)
1:在配置文件中設(shè)置日志保存的路徑,當(dāng)設(shè)置了保存路勁之后,那么日志就會自動進行持久化
2:在配置文件中設(shè)置日志保存的名稱,日志會自動進行持久化
#設(shè)置日志保存的目錄寫法一
logging.file.path=D:\\log
#設(shè)置日志保存的目錄寫法二
logging.file.path=D:/log
打開這個文件:
# 設(shè)置日志的保存名稱
logging.file.name=D:\\log\\spring-boot.log
6. 更簡單的實現(xiàn)自定義日志的打印
6.1 準(zhǔn)備工作,添加 lombok 到項目中
如果你當(dāng)初沒有添加 lombok 又不想重開項目,有這樣一種辦法,下載插件 EditStarters:
6.2 使用 @Slf4j 得到日志對象
import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @ResponseBody @Slf4j //替代了之前需要通過 LoggerFactory.getLogger 操作 public class UserController { //1. 先得到日志對象(來自 slf4j) // private static final Logger log = // LoggerFactory.getLogger(UserController.class); //設(shè)置當(dāng)前的類型 @RequestMapping("/sayhi") public void sayHi(){ //2. 使用日志對象提供的打印方法進行日志打印 log.trace("我是 trace"); log.debug("我是 debug"); log.info("我是 info"); log.warn("我是 warn"); log.error("我是 error"); } }
6.3 使用 log 對象自定義打印日志
看.class
文件,他是給我們轉(zhuǎn)換了的:
Java 程序的運?原理:
Lombok 的作?如下圖所示:
6.4 lombok 更多注解說明
注解 | 作用 |
---|---|
@Getter | ?動添加 getter ?法 |
@Setter | ?動添加 setter ?法 |
@ToString | ?動添加 toString ?法 |
@EqualsAndHashCode | ?動添加 equals 和 hashCode ?法 |
@NoArgsConstructor | ?動添加?參構(gòu)造?法 |
@AllArgsConstructor | ?動添加全屬性構(gòu)造?法,順序按照屬性的定義順序 |
@NonNull | 屬性不能為 null |
@RequiredArgsConstructor | ?動添加必需屬性的構(gòu)造?法,final + @NonNull 的屬性為必需 |
組合注解:
注解 | 作用 |
---|---|
@Data | @Getter + @Setter + @ToString +@EqualsAndHashCode +@RequiredArgsConstructor +@NoArgsConstructor |
日志注解:
注解 | 作? |
---|---|
@Slf4j | 添加?個名為 log 的?志,使? slf4j |
到此這篇關(guān)于SpringBoot深入了解日志的使用的文章就介紹到這了,更多相關(guān)SpringBoot日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java接收text/event-stream格式數(shù)據(jù)的詳細代碼
這篇文章主要介紹了java接收text/event-stream格式數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用配置常用相關(guān)視圖解析器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12Java并發(fā)包工具類CountDownLatch的應(yīng)用詳解
CountDownLatch是Java并發(fā)包中非常實用的一個工具類,它可以幫助我們實現(xiàn)線程之間的同步和協(xié)作。本文主要介紹了CountDownLatch的應(yīng)用場景及最佳實踐,希望對大家有所幫助2023-04-04