springBoot的日志文件詳解
日志是程序的重要組成部分,主要可以用來定位和排查問題。除此之外,還可以用來:
1. 記錄用戶的登錄日志,方便分析用戶是正常登錄還是惡意破解;
2. 記錄系統(tǒng)的操作日志,方便數(shù)據(jù)恢復(fù)和定位操作人;
3. 記錄程序執(zhí)行時間,方便優(yōu)化程序和提供數(shù)據(jù)支持;
在 springBoot 中內(nèi)置了日志框架:SLF4J+logback,這兩者的關(guān)系就類似于JDBC 和 MySQL之間,SLF4J對于日志的多種實現(xiàn)方式做了統(tǒng)一。所以在程序中進(jìn)行自定義日志輸出的時候,也通常是借助于SLF4J框架來輸出日志;

一. 自定義日志打印
1. 獲取日志對象
1. 每個類都有自己的日志對象,所以習(xí)慣用 private 修飾;
2. 為了方便調(diào)用,習(xí)慣用 static 修飾;
3. 且該日志對象不希望被修改,習(xí)慣用 final 修飾;
4. Logger 是一個接口,無法直接 new 對象,一般借助 LoggerFactory.getLogger 方法獲取日志對象;
private static final Logger log = LoggerFactory.getLogger(類對象);
注意 Logger 對象要選擇 slf4j 包下的!??!

2. 使用日志對象打印日志
使用對應(yīng)方法來打印對應(yīng)層級的日志;
log.trace("i'm trace");
log.debug("i'm debug");
log.info("i'm info");
log.warn("i'm warn");
log.error("i'm error");3. 日志格式說明

二. 日志級別
日志級別可以幫助我們篩選出重要的信息,可以通過控制日志級別,來讓日志內(nèi)容更加準(zhǔn)確明了;
日志級別可以控制不同環(huán)境下,打印出不同的日志內(nèi)容,例如在開發(fā)環(huán)境下,需要很多詳細(xì)的信息,而生產(chǎn)環(huán)境下,為了保證性能,一般就會需要較少的日志,此時就可以提供日志級別來實現(xiàn)這個需求;
1. 日志級別的分類和使用
trace:級別最低;
debug: 調(diào)試時候的關(guān)鍵信息打??;
info:默認(rèn)的日志級別;
warn:警告,不影響使用;
error:錯誤信息;
fatal:致命的,因為代碼異常導(dǎo)致程序退出執(zhí)行;

級別越高,能接收的信息就越少,例如設(shè)置為 warn 級別的時候,此時就只能接受 warn,error,fatal 級別的日志了。
2. 日志級別的設(shè)置
日志級別的設(shè)置可以通過配置文件來配置;
# root 設(shè)置了默認(rèn)級別
logging:
level:
root:error也可以針對文件路徑來另外設(shè)置,例如將 com.example.demo 路徑下的日志級別設(shè)置為 trace:
logging:
level:
root:
com:
example:
demo:trace三. 日志持久化
所謂日志持久化,也就是將日志內(nèi)容保存下來,因為在生產(chǎn)環(huán)境下,通常需要保存好日志文件,方面后續(xù)進(jìn)行追溯;
同樣是在配置文件中進(jìn)行配置,指定日志文件的存儲目錄和文件名;
# 日志保存路徑 絕對路徑!
# 只設(shè)置name的話,此時路徑就和項目的路徑是一起的
# 也可以在 name 的基礎(chǔ)上加上路徑
logging:
file:
# path: D:\\test\\
# name: springboot.log
name: D:\\test\\springboot.log并且存儲的 springboot.log日志文件是實時更新的。日志文件的最大容量是 10MB。

四. 更加簡單的實現(xiàn)日志打印
使用 @slf4j 注解,前提是要有 Lombok 框架支持;
@slf4j 是一個類注解,表示給當(dāng)前類中添加一個叫做 log 的日志對象(這是 lombok 提供的對象名),此處的 log 對象就是 slf4j 中提供的 Logger 對象;
@RestController
@Slf4j
public class LoggerController {
@RequestMapping("/log")
public String sayHi(){
log.info("我是 log 的 info");
log.error("我是 log 的 error");
return "hello3";
}
}
五. Lombok的原理
此處再簡單補充一下 Lombok 的一些原理知識:Lombok實在編譯時期起作用的;
Lombok在程序中運行時起到的作用就是,使用注解代替,來快捷的實現(xiàn)一些語句。這點可以通過 target 目錄來觀察;target 為項目最終執(zhí)行的代碼;

在 target 中,注解 @slf4j ,就自動的轉(zhuǎn)換為構(gòu)造日志對象的語句了。

Lombok 還有很多注解是經(jīng)常用到的:
1. @Getter:自動添加 getter 方法
2. @Setter:自動添加 setter 方法
3. @ToString:自動添加 toString 方法
組合注解:@Data:包括 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor
到此這篇關(guān)于springBoot的日志文件的文章就介紹到這了,更多相關(guān)springBoot日志文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring的jdbctemplate的crud的基類dao
本文主要介紹了使用spring的jdbctemplate進(jìn)行增刪改查的基類Dao的簡單寫法,需要的朋友可以參考下2014-02-02
springboot讀取application.yaml文件數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了springboot讀取application.yaml文件數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07

