1. 程式人生 > >🔥SpringBoot圖文教程2—日誌的使用「logback」「log4j」

🔥SpringBoot圖文教程2—日誌的使用「logback」「log4j」

有天上飛的概念,就要有落地的實現

  • 概念+程式碼實現是本文的特點,教程將涵蓋完整的圖文教程,程式碼案例
  • 文章結尾配套自測面試題,學完技術自我測試更紮實
  • 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍

大哥大姐新年好,點贊轉發不要少

SpringBoot 圖文系列教程技術大綱

簡單說明,教程分為基礎篇,進階篇和高階篇

  • 基礎篇,本章力求簡單快速的掌握基本的SpringBoot使用,並應用到專案中
  • 進階篇,學會SpringBoot更多的常見用法以及底層原理
  • 高階篇,著重介紹SpringBoot的與各大場景的整合使用

環境要求

  • 開發工具 IDEA 版本不限
  • maven3.x
  • jdk1.8
  • 本教程採用SpringBoot 2.0.3.RELEASE

SpringBoot 圖文教程系列文章目錄

  1. SpringBoot圖文教程1「概念+案例 思維導圖」「基礎篇上」

前言 又名:為啥要有日誌

文章內容概要

  • 掌握日誌的基本概念和作用
  • 掌握SpringBoot中日誌的使用
  • 瞭解SpringBoot中日誌的相關原理

今天的故事從一艘船說起,泰坦尼克號,昨天重溫了一下這部經典影片。

不過,作為鋼鐵直男程式設計師的我,要分享的並不是 You jump,I jump ,而是 咋沉的?原因咋發現的?

咋沉的?海市蜃樓碰到冰山了。

我咋知道的?通過航海日誌。咳咳 是科學家通過航海日誌搞定的(具體情況可以看果殼的分析文章)

航海日誌用於記錄船的航行資料,會詳細的記錄船在航行過程中船的硬體狀況,遇到的天氣,選擇的航向,以及乘客,貨物等等。而航海日誌一直都是總結航海經驗和分析海難原因的根據。

類似的其實還有黑匣子,記錄飛機飛行的資訊,通過分析黑匣子的資料可以分析空難的原因。emmm 另外黑匣子不是黑的,而是紅色

黑匣子

航海日誌,黑匣子都是日誌記錄系統,通過航海日誌,黑匣子可以

  • 記錄系統中的操作
  • 記錄系統的執行狀況
  • 系統錯誤時候,根據日誌分析原因

而我們的應用程式,作為一種“極其精密,極其高階(省略一萬字)”的東西,也需要類似航海日誌和黑匣子的日誌記錄的功能,記錄系統執行的資訊,出現故障後分析原因,而在實際開發中完成這個功能的就是日誌框架。

日誌框架

本節內容為slf4j log4j 等日誌框架的介紹,可以直接跳過至 SpringBoot 專案整合日誌

全面有效的日誌資訊記錄可以幫助我們全面的監控應用程式的狀態,可以通過日誌系統監控伺服器的狀態,記錄操作行為以及操作軌跡資料,系統發生錯誤,事後進行故障分析,快速定位問題。

舉個例子,日誌系統在我們的專案中就像 城市的道路監控系統 ,城市的道路監控系統能夠通過攝像頭和其他儀器 記錄下來每個紅綠燈路口的情況,通過這些資訊,可以實時監控各個路口的情況,還可以事後追責。

要在程式碼中實現類似的功能,就需要用到日誌框架了,那麼什麼是日誌框架呢?

由於日誌框架的內容過多,請閱讀我的另一篇文章:「故事系列」小故事說清楚什麼是日誌框架

SpringBoot 整合 日誌

日誌列印常見概念

如果你一次都沒有使用過日誌,請閱讀本節內容

你應該記得在 SpringBoot 專案跑起來的時候,在控制檯會出現很多的資訊。這些資訊就是系統的日誌。如下圖。

在圖的最左邊有一列 INFO,這是什麼呢?日誌級別。

什麼是日誌級別

在專案執行起來之後,會有很多的日誌資訊輸出,這些資訊五花八門 即包括你列印的“進入這個方法了”“出去這個方法了”這些意義不大的資訊,也包括 使用者小明 被多扣了十塊錢 這些重要的資訊。很明顯資訊之間的重要程度是不一樣的,日誌級別就是用來標記 資訊重要程度的。

舉個栗子,在前段時間,很多城市 都發布了 一級預警,預警資訊就是國家根據突發事件危害程度不同而劃分的資訊等級,分為:一級、二級、三級、四級。

日誌的級別劃分

日誌由低到高 trace<debug<info<warn<error

日誌的級別除了區分資訊的重要程度,還有一個特別重要的作用是 調整日誌資訊輸出的多少。

什麼意思呢?舉例說明

  1. 你要通過日誌輸出一句話:“哈哈哈哈哈”。這句話很顯然不咋重要,就可以把它的等級設定為 info
  2. 專案中捕獲了異常,想要把異常資訊通過日誌輸出,這個很重要,於是把他標記為了 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 日誌使用

接下來我們直接開始日誌的使用。

  1. 注意:SpringBoot 專案預設已經集成了 logback日誌,所以在 SpringBoot 中使用 logback 日誌,不需要導jar包,也不需要匯入額外的配置檔案。

  2. 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級別,所有的日誌資訊都會按照這個標準輸入,如果想要修改 就需要修改配置

常見配置

  1. 根日誌級別配置
  2. 具體某個包的日誌級別

注意:具體包的日誌級別 優先順序高於 整個專案的根日誌級別,dao包我們定義為了 debug 級別,這時候儘管整個專案的是info,但是dao包相關的日誌仍然按照debug級別輸出

  1. 定義日誌資訊輸出到檔案

  2. 在控制檯輸出的日誌的格式

日誌輸出格式

  • %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日誌的使用logbacklog4j

有天上飛的概念,就要有落地的實現 概念+程式碼實現是本文的特點,教程將涵蓋完整的圖文教程,程式碼案例 文章結尾配套自測面試題,學完技術自我測試更紮實 概念十遍不如程式碼一遍,朋友,希望你把文中所有的程式碼案例都敲一遍 大哥大姐新年好,點贊轉發不要少 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