springBoot的日志文件詳解
日志是程序的重要組成部分,主要可以用來(lái)定位和排查問(wèn)題。除此之外,還可以用來(lái):
1. 記錄用戶的登錄日志,方便分析用戶是正常登錄還是惡意破解;
2. 記錄系統(tǒng)的操作日志,方便數(shù)據(jù)恢復(fù)和定位操作人;
3. 記錄程序執(zhí)行時(shí)間,方便優(yōu)化程序和提供數(shù)據(jù)支持;
在 springBoot 中內(nèi)置了日志框架:SLF4J+logback,這兩者的關(guān)系就類似于JDBC 和 MySQL之間,SLF4J對(duì)于日志的多種實(shí)現(xiàn)方式做了統(tǒng)一。所以在程序中進(jìn)行自定義日志輸出的時(shí)候,也通常是借助于SLF4J框架來(lái)輸出日志;
一. 自定義日志打印
1. 獲取日志對(duì)象
1. 每個(gè)類都有自己的日志對(duì)象,所以習(xí)慣用 private 修飾;
2. 為了方便調(diào)用,習(xí)慣用 static 修飾;
3. 且該日志對(duì)象不希望被修改,習(xí)慣用 final 修飾;
4. Logger 是一個(gè)接口,無(wú)法直接 new 對(duì)象,一般借助 LoggerFactory.getLogger 方法獲取日志對(duì)象;
private static final Logger log = LoggerFactory.getLogger(類對(duì)象);
注意 Logger 對(duì)象要選擇 slf4j 包下的?。?!
2. 使用日志對(duì)象打印日志
使用對(duì)應(yīng)方法來(lái)打印對(duì)應(yīng)層級(jí)的日志;
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. 日志格式說(shuō)明
二. 日志級(jí)別
日志級(jí)別可以幫助我們篩選出重要的信息,可以通過(guò)控制日志級(jí)別,來(lái)讓日志內(nèi)容更加準(zhǔn)確明了;
日志級(jí)別可以控制不同環(huán)境下,打印出不同的日志內(nèi)容,例如在開(kāi)發(fā)環(huán)境下,需要很多詳細(xì)的信息,而生產(chǎn)環(huán)境下,為了保證性能,一般就會(huì)需要較少的日志,此時(shí)就可以提供日志級(jí)別來(lái)實(shí)現(xiàn)這個(gè)需求;
1. 日志級(jí)別的分類和使用
trace:級(jí)別最低;
debug: 調(diào)試時(shí)候的關(guān)鍵信息打??;
info:默認(rèn)的日志級(jí)別;
warn:警告,不影響使用;
error:錯(cuò)誤信息;
fatal:致命的,因?yàn)榇a異常導(dǎo)致程序退出執(zhí)行;
級(jí)別越高,能接收的信息就越少,例如設(shè)置為 warn 級(jí)別的時(shí)候,此時(shí)就只能接受 warn,error,fatal 級(jí)別的日志了。
2. 日志級(jí)別的設(shè)置
日志級(jí)別的設(shè)置可以通過(guò)配置文件來(lái)配置;
# root 設(shè)置了默認(rèn)級(jí)別 logging: level: root:error
也可以針對(duì)文件路徑來(lái)另外設(shè)置,例如將 com.example.demo 路徑下的日志級(jí)別設(shè)置為 trace:
logging: level: root: com: example: demo:trace
三. 日志持久化
所謂日志持久化,也就是將日志內(nèi)容保存下來(lái),因?yàn)樵谏a(chǎn)環(huán)境下,通常需要保存好日志文件,方面后續(xù)進(jìn)行追溯;
同樣是在配置文件中進(jìn)行配置,指定日志文件的存儲(chǔ)目錄和文件名;
# 日志保存路徑 絕對(duì)路徑! # 只設(shè)置name的話,此時(shí)路徑就和項(xiàng)目的路徑是一起的 # 也可以在 name 的基礎(chǔ)上加上路徑 logging: file: # path: D:\\test\\ # name: springboot.log name: D:\\test\\springboot.log
并且存儲(chǔ)的 springboot.log日志文件是實(shí)時(shí)更新的。日志文件的最大容量是 10MB。
四. 更加簡(jiǎn)單的實(shí)現(xiàn)日志打印
使用 @slf4j 注解,前提是要有 Lombok 框架支持;
@slf4j 是一個(gè)類注解,表示給當(dāng)前類中添加一個(gè)叫做 log 的日志對(duì)象(這是 lombok 提供的對(duì)象名),此處的 log 對(duì)象就是 slf4j 中提供的 Logger 對(duì)象;
@RestController @Slf4j public class LoggerController { @RequestMapping("/log") public String sayHi(){ log.info("我是 log 的 info"); log.error("我是 log 的 error"); return "hello3"; } }
五. Lombok的原理
此處再簡(jiǎn)單補(bǔ)充一下 Lombok 的一些原理知識(shí):Lombok實(shí)在編譯時(shí)期起作用的;
Lombok在程序中運(yùn)行時(shí)起到的作用就是,使用注解代替,來(lái)快捷的實(shí)現(xiàn)一些語(yǔ)句。這點(diǎn)可以通過(guò) target 目錄來(lái)觀察;target 為項(xiàng)目最終執(zhí)行的代碼;
在 target 中,注解 @slf4j ,就自動(dòng)的轉(zhuǎn)換為構(gòu)造日志對(duì)象的語(yǔ)句了。
Lombok 還有很多注解是經(jīng)常用到的:
1. @Getter:自動(dòng)添加 getter 方法
2. @Setter:自動(dòng)添加 setter 方法
3. @ToString:自動(dòng)添加 toString 方法
組合注解:@Data:包括 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor
到此這篇關(guān)于springBoot的日志文件的文章就介紹到這了,更多相關(guān)springBoot日志文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring 注解編程模型相關(guān)知識(shí)詳解
這篇文章主要介紹了Spring 注解編程模型相關(guān)知識(shí)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09java實(shí)現(xiàn)簡(jiǎn)單的給sql語(yǔ)句賦值的示例
這篇文章主要介紹了java實(shí)現(xiàn)簡(jiǎn)單的給sql語(yǔ)句賦值的示例,需要的朋友可以參考下2014-05-05spring的jdbctemplate的crud的基類dao
本文主要介紹了使用spring的jdbctemplate進(jìn)行增刪改查的基類Dao的簡(jiǎn)單寫法,需要的朋友可以參考下2014-02-02springboot讀取application.yaml文件數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了springboot讀取application.yaml文件數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07JAVA 根據(jù)身份證計(jì)算年齡的實(shí)現(xiàn)代碼
這篇文章主要介紹了JAVA 根據(jù)身份證計(jì)算年齡的實(shí)例代碼及java根據(jù)出生日期獲得年齡的方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05