🔥SpringBoot圖文教程2—日誌的使用「logback」「log4j」
有天上飛的概念,就要有落地的實現
- 概念+程式碼實現是本文的特點,教程將涵蓋完整的圖文教程,程式碼案例
- 文章結尾配套自測面試題,學完技術自我測試更紮實
- 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍
大哥大姐新年好,點贊轉發不要少
SpringBoot 圖文系列教程技術大綱
簡單說明,教程分為基礎篇,進階篇和高階篇
- 基礎篇,本章力求簡單快速的掌握基本的SpringBoot使用,並應用到專案中
- 進階篇,學會SpringBoot更多的常見用法以及底層原理
- 高階篇,著重介紹SpringBoot的與各大場景的整合使用
環境要求
- 開發工具 IDEA 版本不限
- maven3.x
- jdk1.8
- 本教程採用SpringBoot 2.0.3.RELEASE
SpringBoot 圖文教程系列文章目錄
- SpringBoot圖文教程1「概念+案例 思維導圖」「基礎篇上」
前言 又名:為啥要有日誌
文章內容概要
- 掌握日誌的基本概念和作用
- 掌握SpringBoot中日誌的使用
- 瞭解SpringBoot中日誌的相關原理
今天的故事從一艘船說起,泰坦尼克號,昨天重溫了一下這部經典影片。
不過,作為鋼鐵直男程式設計師的我,要分享的並不是 You jump,I jump ,而是 咋沉的?原因咋發現的?
咋沉的?海市蜃樓碰到冰山了。
我咋知道的?通過航海日誌。咳咳 是科學家通過航海日誌搞定的(具體情況可以看果殼的分析文章)
航海日誌用於記錄船的航行資料,會詳細的記錄船在航行過程中船的硬體狀況,遇到的天氣,選擇的航向,以及乘客,貨物等等。而航海日誌一直都是總結航海經驗和分析海難原因的根據。
類似的其實還有黑匣子,記錄飛機飛行的資訊,通過分析黑匣子的資料可以分析空難的原因。emmm 另外黑匣子不是黑的,而是紅色
黑匣子
航海日誌,黑匣子都是日誌記錄系統,通過航海日誌,黑匣子可以
- 記錄系統中的操作
- 記錄系統的執行狀況
- 系統錯誤時候,根據日誌分析原因
而我們的應用程式,作為一種“極其精密,極其高階(省略一萬字)”的東西,也需要類似航海日誌和黑匣子的日誌記錄的功能,記錄系統執行的資訊,出現故障後分析原因,而在實際開發中完成這個功能的就是日誌框架。
日誌框架
本節內容為slf4j log4j 等日誌框架的介紹,可以直接跳過至 SpringBoot 專案整合日誌
全面有效的日誌資訊記錄可以幫助我們全面的監控應用程式的狀態,可以通過日誌系統監控伺服器的狀態,記錄操作行為以及操作軌跡資料,系統發生錯誤,事後進行故障分析,快速定位問題。
舉個例子,日誌系統在我們的專案中就像 城市的道路監控系統 ,城市的道路監控系統能夠通過攝像頭和其他儀器 記錄下來每個紅綠燈路口的情況,通過這些資訊,可以實時監控各個路口的情況,還可以事後追責。
要在程式碼中實現類似的功能,就需要用到日誌框架了,那麼什麼是日誌框架呢?
由於日誌框架的內容過多,請閱讀我的另一篇文章:「故事系列」小故事說清楚什麼是日誌框架
SpringBoot 整合 日誌
日誌列印常見概念
如果你一次都沒有使用過日誌,請閱讀本節內容
你應該記得在 SpringBoot 專案跑起來的時候,在控制檯會出現很多的資訊。這些資訊就是系統的日誌。如下圖。
在圖的最左邊有一列 INFO,這是什麼呢?日誌級別。
什麼是日誌級別
在專案執行起來之後,會有很多的日誌資訊輸出,這些資訊五花八門 即包括你列印的“進入這個方法了”“出去這個方法了”這些意義不大的資訊,也包括 使用者小明 被多扣了十塊錢 這些重要的資訊。很明顯資訊之間的重要程度是不一樣的,日誌級別就是用來標記 資訊重要程度的。
舉個栗子,在前段時間,很多城市 都發布了 一級預警,預警資訊就是國家根據突發事件危害程度不同而劃分的資訊等級,分為:一級、二級、三級、四級。
日誌的級別劃分
日誌由低到高 trace<debug<info<warn<error
日誌的級別除了區分資訊的重要程度,還有一個特別重要的作用是 調整日誌資訊輸出的多少。
什麼意思呢?舉例說明
- 你要通過日誌輸出一句話:“哈哈哈哈哈”。這句話很顯然不咋重要,就可以把它的等級設定為 info
- 專案中捕獲了異常,想要把異常資訊通過日誌輸出,這個很重要,於是把他標記為了 Error
......就這樣,在整個專案中,你標記了 10000 條 info的資訊,10個Error的資訊,那麼專案執行的時候,如果1萬多條資訊全部輸出話,重要的Error資訊就會被淹沒在不重要的資訊中。
看不到重要資訊了。咋辦嘛?
解決辦法是:規定整個專案的日誌輸出等級為Error即可,代表只有Error和Error以上等級的日誌資訊才會被輸出到控制檯,其他info debug等級不夠就看不到了。
這張圖上只有INFO 是因為SpringBoot專案預設規定的日誌等級就是INFO,所以比INFO等級低的資訊都不能輸出
SpringBoot 整合 logback 日誌
在上一篇教程程式碼案例的基礎上做日誌整合,沒有看過上一篇教程的可以直接下載專案案例 地址:boot-hello
在SpringBoot中我們使用的第一個日誌框架是 logback,logback是啥呢?簡單介紹,logback和更加常用的log4j一個爹,是log4j創始人設計的又一個開源日誌元件。
logback 日誌使用
接下來我們直接開始日誌的使用。
-
注意:SpringBoot 專案預設已經集成了 logback日誌,所以在 SpringBoot 中使用 logback 日誌,不需要導jar包,也不需要匯入額外的配置檔案。
-
SpringBoot 中可以直接使用 logback 日誌 列印資訊
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestLog {
/**
* getLogger 引數為當前類的類物件
* org.slf4j.Logger;
* org.slf4j.LoggerFactory;
*/
private static Logger logger = LoggerFactory.getLogger(TestLog.class);
public static void main(String[] args) {
/**
* 通過 Logger 的api列印資訊
* 日誌的級別;
* 由低到高 trace<debug<info<warn<error
*/
logger.debug("這是日誌");
logger.info("這是日誌");
logger.warn("這是日誌");
logger.error("這是日誌");
}
}
SpringBoot修改日誌的預設配置
SpringBoot預設給我們使用的是info級別,所有的日誌資訊都會按照這個標準輸入,如果想要修改 就需要修改配置
常見配置
- 根日誌級別配置
- 具體某個包的日誌級別
注意:具體包的日誌級別 優先順序高於 整個專案的根日誌級別,dao包我們定義為了 debug 級別,這時候儘管整個專案的是info,但是dao包相關的日誌仍然按照debug級別輸出
-
定義日誌資訊輸出到檔案
-
在控制檯輸出的日誌的格式
日誌輸出格式
- %d表示日期時間,
- %thread表示執行緒名,
- %-5level:級別從左顯示5個字元寬度
- %logger{50} 表示logger名字最長50個字元,否則按照句點分割。
- %msg:日誌訊息,
- %n是換行符
以上就是 SpringBoot 專案中使用 logback 日誌的正確姿勢了。
logback獨立配置檔案【瞭解內容】
如果在 SpringBoot 中想要單獨配置 logback 不使用application配置檔案,也非常簡單,只需要在專案的 src/resources
目錄下匯入 logback.xml 配置檔案即可。
配置檔案示例如下:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--定義專案中日誌輸出位置-->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--定義專案的日誌輸出格式-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern> [%p] %d{yyyy-MM-dd HH:mm:ss} %m %n</pattern>
</layout>
</appender>
<!--專案中跟日誌控制-->
<root level="INFO">
<appender-ref ref="stdout"/>
</root>
<!--專案中指定包日誌控制-->
<logger name="com.lu.dao" level="DEBUG"/>
</configuration>
SpringBoot 整合 log4j 日誌
最後簡單說一下在SpringBoot 中如何使用log4j日誌,注意:推薦使用logback,但是有需要可以切換成log4j。
日誌切換的切換不需要 修改 application 配置檔案中的日誌配置,只需要將 logback 的依賴切換為 log4j 即可
1.將logback的依賴排除
2.匯入log4j的依賴
關於日誌切換的理論基礎,請閱讀我的另一篇文章:「故事系列」小故事說清楚什麼是日誌框架
總結
恭喜你完成了本章的學習,恭喜你掌握了通過SpringBoot 列印日誌的能力。為你鼓掌!
讓我們再次回顧本文的學習目標
- 掌握日誌的基本概念和作用
- 掌握SpringBoot中日誌的使用
- 瞭解SpringBoot中日誌的相關原理
要掌握SpringBoot更多的用法,請持續關注本系列教程。
下面體貼的我給朋友萌還準備了一些 自測面試題和專案案例,希望你能夠成熱打鐵,將知識夯紮實。
上期自測面試題答案
見面試題集錦 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes
自測面試題(答案見下期)
- 日誌的作用
- 日誌的級別
- 有哪些常見的日誌框架
上期自測實現專案小案例答案
見碼雲倉庫 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes
自測實現專案小案例(答案見下期)
Tip:在我的計劃中,更新完 SpringBoot 圖文教程系列 之後 將會更新 SpringBoot微服務電商後臺管理系統實戰開發圖文教程
文後所有專案小案例的庫表均來自該專案,通過精心設計,環環相扣,通過小案例的鋪墊,後續可以直接與 微服務實戰開發教程 無縫相容
需求
在上期案例程式碼的基礎上增加日誌列印
求關注,求點贊,求轉發
本人擁有兩年開發經驗和三年Java大資料教學經驗,曾幫助2000+學生成功就業和跳槽。
歡迎關注本人公眾號:鹿老師的Java筆記,將在長期更新Java技術圖文教程和視訊教程,Java學習經驗,Java面試經驗以及Java實戰開發經驗。
相關推薦
128293;SpringBoot圖文教程2—日誌的使用「logback」「log4j」
有天上飛的概念,就要有落地的實現 概念+程式碼實現是本文的特點,教程將涵蓋完整的圖文教程,程式碼案例 文章結尾配套自測面試題,學完技術自我測試更紮實 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍 大哥大姐新年好,點贊轉發不要少 SpringBoot 圖文系列教程技術大綱 簡
SpringBoot圖文教程15—專案異常怎麼辦?「跳轉404錯誤頁面」「全域性異常捕獲」
![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200312205829155-764801728.png) > **有天上飛的概念,就要有落地的實現** > > - 概念十遍不如程式碼一遍,朋友,希望你把文
SpringBoot圖文教程「概念+案例 思維導圖」「基礎篇上」
有天上飛的概念,就要有落地的實現 概念+程式碼實現是本文的特點,教程將涵蓋完整的圖文教程,程式碼案例 每個知識點配套自測面試題,學完技術自我測試 本文初學向,所以希望文中所有的程式碼案例都能敲一遍 大哥大姐新年好,點贊轉發不要少 **文字已收錄至GitHub開源倉庫 Lu_JavaNod
SpringBoot圖文教程8 — SpringBoot整合MBG「程式碼生成器」
有天上飛的概念,就要有落地的實現 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍 先贊後看,養成習慣 SpringBoot 圖文教程系列文章目錄 SpringBoot圖文教程1「概念+案例 思維導圖」「基礎篇上」 SpringBoot圖文教程2—日誌的使用「logback」「
SpringBoot圖文教程9—SpringBoot 匯入匯出 Excel 「Apache Poi」
有天上飛的概念,就要有落地的實現 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍 先贊後看,養成習慣 SpringBoot 圖文教程系列文章目錄 SpringBoot圖文教程1「概念+案例 思維導圖」「基礎篇上」 SpringBoot圖文教程2—日誌的使用「logback」「
SpringBoot圖文教程10—模板匯出|百萬資料Excel匯出|圖片匯出「easypoi」
![](https://img2020.cnblogs.com/blog/1003051/202003/1003051-20200305130804521-1152630068.png) > **有天上飛的概念,就要有落地的實現** > > - 概念十遍不如程式碼一遍,朋友,希望你把文
SpringBoot圖文教程11—從此不寫mapper檔案「SpringBoot整合MybatisPlus」
![](https://img2020.cnblogs.com/blog/1003051/202003/1003051-20200305210955270-1925372518.png) > **有天上飛的概念,就要有落地的實現** > > - 概念十遍不如程式碼一遍,朋友,希望你把文
SpringBoot圖文教程14—SpringBoot整合EasyExcel「上」
![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200311134159946-377635595.png) > **有天上飛的概念,就要有落地的實現** > > - 概念十遍不如程式碼一遍,朋友,希望你把文
SpringBoot圖文教程17—上手就會 RestTemplate 使用指南「Get Post」「設定請求頭」
![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200320211029269-1539461491.png) > **有天上飛的概念,就要有落地的實現** > > - 概念十遍不如程式碼一遍,朋友,希望你把
SpringBoot初始教程之日誌處理(二)
SpringBoot初始教程之日誌處理(二) 1.介紹 SpringBoot預設是採用logback進行日誌處理、Logback是由log4j創始人設計的又一個開源日誌元件。Logback是由log4j創始人設計的又一個開源日誌元件。 logback當前分成三個模組:logback-co
iOS原生專案(Objective-C)整合React Native(0.57.3版本)圖文教程--(2)整合過程
iOS原生專案(Objective-C)整合React Native(0.57.3版本)圖文教程–(1)基本環境 iOS原生專案(Objective-C)整合React Native(0.57.3版本)圖文教程–(2)整合過程 文章目錄 iOS原生
SpringBoot基礎教程2-1-8 資料驗證-自定義日期格式驗證
1 概述 javax.validation包與hibernate-validator包中註解能滿足大部分需求,但是還是有必要熟悉下自定義資料驗證註解,如日期格式驗證。 2 新增依賴 <
SpringBoot圖文教程5—SpringBoot 中使用Aop
有天上飛的概念,就要有落地的實現 概念+程式碼實現是本文的特點,教程將涵蓋完整的圖文教程,程式碼案例 文章結尾配套自測面試題,學完技術自我測試更紮實 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍 大哥大姐新年好,點贊轉發不要少 SpringBoot 圖文系列教程技術大綱 鹿老
SpringBoot圖文教程7—SpringBoot攔截器的使用姿勢這都有
有天上飛的概念,就要有落地的實現 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍 先贊後看,養成習慣 SpringBoot 圖文教程系列文章目錄 SpringBoot圖文教程1「概念+案例 思維導圖」「基礎篇上」 SpringBoot圖文教程2—日誌的使用「logba
日誌框架logback相對於log4j的優勢
超過 自動 filter 一個 生日 jar 如果 append 登錄 日誌框架logback相對於log4j的優勢。 更快的實現 Logback的內核重寫了,在一些關鍵執行路徑上性能提升10倍以上。而且logback不僅性能提升了,初始化內存加載也更小了。 非常充分的測試
2.SpringBoot入門教程之整合slf4j日誌配置
SpringBoot入門教程之整合slf4j日誌配置 Java日誌框架眾多,常用的有java.util.logging, log4j, logback,commons-logging等等。個人比較偏好的是slf4j,同時也比較偏好使用字尾為.propertie
11、Logback日誌框架介紹和SpringBoot整合實戰 2節課
1、新日誌框架LogBack介紹 簡介:日誌介紹和新日誌框架Logback講解 1.常用處理java的日誌元件 slf4j,log4j,logback,common-logging 等 &
springBoot(4):日誌配置-logback
springboot 日誌配置-logback和log4j2 一、簡介支持日誌框架:Java Util Logging, Log4J2 and Logback,默認是使用logbacklogback配置方式spring boot默認會加載classpath:logback-spring.xml或者cl
springboot日誌配置Logback
mat classpath path 節點 %d .text fixed ger tps springboot可以通過application.yml或者application.properties中配置如下屬性指定日誌配置 #logback日誌配置xml存放路徑配置logg
asp.Net Core免費開源分布式異常日誌收集框架Exceptionless安裝配置以及簡單使用圖文教程
true 類型 全部 界面 目錄 () 程序包 light set 最近在學習張善友老師的NanoFabric 框架的時了解到Exceptionless : https://exceptionless.com/ !因此學習了一下這個開源框架!下面對Exceptionless