您好,登錄后才能下訂單哦!
這篇“如何掌握SpringBoot日志文件”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“如何掌握SpringBoot日志文件”文章吧。
日志是程序的重要組成部分,想象一下,如果程序報(bào)錯(cuò)了,不讓你打開控制臺(tái)看日志,那么你能找到報(bào)錯(cuò)的原因嗎。
日志對(duì)于我們來(lái)說(shuō),最主要的用途就是排除和定位問(wèn)題。除了發(fā)現(xiàn)和定位問(wèn)題之外,我們還可以通過(guò)日志實(shí)現(xiàn)以下功能:
記錄用戶登錄日志,方便分析用戶是正常登錄,還是惡意破解用戶
記錄系統(tǒng)的操作日志,方便數(shù)據(jù)恢復(fù)和定位操作人
記錄程序的執(zhí)行時(shí)間,方便以后優(yōu)化程序提供數(shù)據(jù)支持
Spring Boot項(xiàng)目在啟動(dòng)的時(shí)候默認(rèn)就會(huì)有日志的輸出,如下圖:
通過(guò)上述信息我們可以發(fā)現(xiàn):
Spring Boot內(nèi)置了日志框架
默認(rèn)情況下,輸出的日志并不是開發(fā)者定義和打印的,那么開發(fā)者怎么在程序中定義打印日志?
日志默認(rèn)是打印在控制臺(tái)上,而控制臺(tái)的日志是不能被保存的, 如何將日志永久的保存下來(lái)?
開發(fā)者自定義打印日志的實(shí)現(xiàn)步驟:
在程序中得到日志
使用日志對(duì)象的相關(guān)語(yǔ)法輸出要打印的內(nèi)容
private static final Logger log = LoggerFactory.getLogger(UserController.class);
日志工廠需要將每個(gè)類的類型傳進(jìn)去,這樣我們才能知道日志的歸屬類,才能更方便更直觀的定位到問(wèn)題
注意:logger對(duì)象屬于org.slf4j包下的,不要導(dǎo)錯(cuò)了
日志對(duì)象的打印方法有很多種,我們可以使用info方法來(lái)輸出日志,
@Controller @ResponseBody public class UserController { private static final Logger log = LoggerFactory.getLogger(UserController.class); @RequestMapping("/sayhi") public void sayHi() { log.trace("trace"); log.debug("debug"); log.info("info"); log.warn("warn"); log.error("error"); } }
日志級(jí)別可以幫你篩選出重要的信息,比如設(shè)置日志級(jí)別為error,那么就可以只看到程序的報(bào)錯(cuò)日志了,對(duì)于普通的調(diào)試日志和業(yè)務(wù)日志就可以忽略了。從而節(jié)省開發(fā)者篩選的時(shí)間
日志級(jí)別可以控制不同環(huán)境下,一個(gè)程序是否需要打印日志,如開發(fā)環(huán)境我們需要很詳細(xì)的信息,而生產(chǎn)環(huán)境為了保持性能和安全性就會(huì)輸出少量的日志,而通過(guò)日志級(jí)別可以實(shí)現(xiàn)此類需求
日志級(jí)別分為:
trace: 微量,少許的意思,級(jí)別最低
debug:需要調(diào)試時(shí)候的關(guān)鍵信息打印
info:普通的打印信息(默認(rèn)日志級(jí)別)
warn:警告:不影響使用,但需要注意的問(wèn)題
error:錯(cuò)誤信息,級(jí)別較高的錯(cuò)誤日志信息
fatal:致命的,因?yàn)榇a異常導(dǎo)致程序退出執(zhí)行的事件
日志級(jí)別的順序:
越往上,接收到的信息就越少,如設(shè)置了warn就只能接收到warn及其上面的級(jí)別
日志級(jí)別設(shè)置
logging: level: root: error
默認(rèn)日志輸出級(jí)別
清除掉配置文件當(dāng)中的日志設(shè)置,觀察控制臺(tái)輸出的日志級(jí)別
得到結(jié)論,日志輸出級(jí)別默認(rèn)是info
當(dāng)存在局部日志級(jí)別和全局日志級(jí)別設(shè)置,那么當(dāng)訪問(wèn)局部日志時(shí),使用的是局部日志級(jí)別。也就是局部日志優(yōu)先級(jí)高于全局日志的優(yōu)先級(jí)
以上的日志都是輸出在控制臺(tái)上,然而生產(chǎn)環(huán)境上咱們需要將日志保存下來(lái),以便出現(xiàn)問(wèn)題之后追溯問(wèn)題,把日志保存下來(lái)的過(guò)程叫做持久化
想要將日至持久化,只需要在配置文件中指定日志的存儲(chǔ)目錄或者是指定日志保存文件名,Spring Boot就會(huì)將控制臺(tái)的日志寫到相應(yīng)的目錄或文件下
配置日志文件的保存路徑:
logging: file: path: D:\rizhi
保存的路徑,當(dāng)中包含轉(zhuǎn)義字符方面的設(shè)置我們可以使用這個(gè)/
來(lái)作為分割符。
如果堅(jiān)持使用Windows下的分割符,我們需要使用\
轉(zhuǎn)義字符來(lái)轉(zhuǎn)義一下
配置日志文件的文件名:
logging: file: name: D:/rizhi/logger/spring.log
每次使用LoggerFactory.getLogger很繁瑣,且每個(gè)類都添加一遍,也很麻煩。這里的lombok是一種更好的日志輸出方式
添加lombok框架支持
使用@slf4j注解輸出日志
首先要安裝一個(gè)插件:
然后再pom.xml頁(yè)面右鍵、
最后重新添加依賴就可以了
使用@Slf4j注解,在程序中使用log對(duì)象即可輸入日志并且只能使用log對(duì)象才能輸出,這是lombok提供的對(duì)象名
lombok 能夠打印?志的密碼就在 target ?錄??,target 為項(xiàng)?最終執(zhí)?的代碼,查看 target ?錄我們可以發(fā)現(xiàn):
這里的@Slf4j注解變成了一個(gè)對(duì)象。
下面是java程序的運(yùn)行原理:
基本注解
注解 | 作用 |
---|---|
@Getter | 自動(dòng)添加get方法 |
@Setter | 自動(dòng)添加set方法 |
@ToString | 自動(dòng)添加toString方法 |
@EqualsAndHashCode | 自動(dòng)添加equals和hasCode方法 |
@NoArgsConstructor | 自動(dòng)添加無(wú)參構(gòu)造方法 |
@AllArgsConstructor | 自動(dòng)添加全屬性構(gòu)造方法,順序按照屬性的定義順序 |
@NonNull | 屬性不能為null |
@RequiredArgsConstructor | 自動(dòng)添加必須屬性的構(gòu)造方法,final + @NonNull的屬性為需 |
組合注解:
注解 | 作用 |
---|---|
@Data | @Getter+@Setter+EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor |
日志注解
注解 | 作用 |
---|---|
@Slf4j | 添加一個(gè)名為log的對(duì)象 |
以上就是關(guān)于“如何掌握SpringBoot日志文件”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。