欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Boot日志的策略解析與門(mén)面模式

 更新時(shí)間:2024年05月04日 11:01:43   作者:從零開(kāi)始的-CodeNinja之路  
這篇文章主要介紹了Spring?Boot日志的策略解析與門(mén)面模式,日志對(duì)我們來(lái)說(shuō)并不陌?,通過(guò)打印日志來(lái)發(fā)現(xiàn)和定位問(wèn)題,或者根據(jù)日志來(lái)分析程序的運(yùn)行過(guò)程,Spring?Boot中的日志管理是非常重要的,需要的朋友可以參考下

一、日志的概念

日志對(duì)我們來(lái)說(shuō)并不陌?,通過(guò)打印日志來(lái)發(fā)現(xiàn)和定位問(wèn)題,或者根據(jù)日志來(lái)分析程序的運(yùn)行過(guò)程.

日志的用途:

Spring Boot中的日志管理是非常重要的,它可以幫助開(kāi)發(fā)人員在應(yīng)用程序運(yùn)行時(shí)跟蹤問(wèn)題、監(jiān)控性能并記錄關(guān)鍵信息。通過(guò)配置適當(dāng)?shù)娜罩炯?jí)別和輸出格式,開(kāi)發(fā)人員可以更好地理解應(yīng)用程序的行為并快速定位和解決問(wèn)題。Spring Boot提供了靈活且強(qiáng)大的日志管理功能,使開(kāi)發(fā)人員能夠輕松地集成和配置各種日志框架,如Logback、Log4j2等,以滿(mǎn)足不同項(xiàng)目的需求。

二、日志的應(yīng)用

2.1、日志的格式

從上圖可以看到,日志輸出內(nèi)容元素具體如下:

  • 時(shí)間日期:精確到毫秒
  • 日志級(jí)別:ERROR,WARN,INFO,DEBUG或TRACE
  • 進(jìn)程ID
  • 線(xiàn)程名
  • Logger名(通常使用源代碼的類(lèi)名)
  • 日志內(nèi)容

2.2、日志級(jí)別

日志級(jí)別代表著日志信息對(duì)應(yīng)問(wèn)題的嚴(yán)重性,為了更快的篩選符合?標(biāo)的日志信息.

日志的級(jí)別從高到低依次為:FATAL、ERROR、WARN、INFO、DEBUG、TRACE

  • FATAL:致命信息,表示需要立即被處理的系統(tǒng)級(jí)錯(cuò)誤.
  • ERROR:錯(cuò)誤信息,級(jí)別較?的錯(cuò)誤日志信息,但仍然不影響系統(tǒng)的繼續(xù)運(yùn)行
  • WARN:警告信息,不影響使用,但需要注意的問(wèn)題
  • INFO:普通信息,用于記錄應(yīng)用程序正常運(yùn)行時(shí)的?些信息,例如系統(tǒng)啟動(dòng)完成、請(qǐng)求處理完成等.
  • DEBUG:調(diào)試信息,需要調(diào)試時(shí)候的關(guān)鍵信息打印.
  • TRACE:追蹤信息,比DEBUG更細(xì)粒度的信息事件(除非有特殊?意,否則請(qǐng)使用DEBUG級(jí)別替代)

日志級(jí)別的順序:

級(jí)別越高,收到的消息越少

2.3、日志的使用

SpringBoot內(nèi)置了日志框架 Slf4j ,我們可以直接調(diào)用 Slf4j 來(lái)輸出日志

添加lombok依賴(lài)

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>

輸出?志

lombok提供的 @Slf4j 會(huì)幫我們提供?個(gè)日志對(duì)象log,我們直接使用就可以.

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
	public class LogController {
		public void log(){
		log.info("--------------要輸出?志的內(nèi)容----------------");
	}
}

三、門(mén)面模式(外觀(guān)模式)

SLF4J是門(mén)面模式的典型應(yīng)用(但不僅僅使?了門(mén)面模式).SLF4J不同于其他日志框架,它不是?個(gè)真正的日志實(shí)現(xiàn),而是?個(gè)抽象層,對(duì)日志框架制定的?種規(guī)范,標(biāo)準(zhǔn),接口.所有SLF4J并不能獨(dú)?使用,需要和具體的日志框架配合使用.

門(mén)面模式定義

門(mén)面模式(FacadePattern)?稱(chēng)為外觀(guān)模式,提供了?個(gè)統(tǒng)?的接口,用來(lái)訪(fǎng)問(wèn)子系統(tǒng)中的?群接口.

其主要特征是定義了?個(gè)高層接口,讓子系統(tǒng)更容易使用.

原文:Provideaunifiedinterfacetoasetofinterfacesinasubsystem.Facadedefinesahigherlevelinterfacethatmakesthesubsystemeasiertouse.

解釋?zhuān)阂?個(gè)?系統(tǒng)的外部與其內(nèi)部的通信必須通過(guò)?個(gè)統(tǒng)?的對(duì)象進(jìn)?.門(mén)面模式提供?個(gè)?層 次的接?,使得?系統(tǒng)更易于使?.

門(mén)面模式主要包含2種角色: 外觀(guān)角色(Facade):也稱(chēng)門(mén)面角色,系統(tǒng)對(duì)外的統(tǒng)?接口. 子系統(tǒng)角色(SubSystem):可以同時(shí)有?個(gè)或多個(gè)SubSystem.每個(gè)SubSytem都不是?個(gè)單獨(dú)的類(lèi), 而是?個(gè)類(lèi)的集合.SubSystem并不知道Facade的存在,對(duì)于SubSystem而?,Facade只是另?個(gè) 客戶(hù)端而已(即Facade對(duì)SubSystem透明)

?如去醫(yī)院看病,可能要去掛號(hào),門(mén)診,化驗(yàn),取藥,讓患者或患者家屬覺(jué)得很復(fù)雜,如果有提供接待?員,只讓接待?員來(lái)處理,就很方便.

門(mén)面模式的實(shí)現(xiàn)

場(chǎng)景:回家,我們會(huì)開(kāi)各個(gè)屋的燈.離開(kāi)家時(shí),會(huì)關(guān)閉各個(gè)屋的燈 如果家?設(shè)置?個(gè)總開(kāi)關(guān),來(lái)控制整個(gè)屋的燈就會(huì)很方便.

門(mén)面模式的優(yōu)點(diǎn)

  • 減少了系統(tǒng)的相互依賴(lài).實(shí)現(xiàn)了客戶(hù)端與子系統(tǒng)的耦合關(guān)系,這使得子系統(tǒng)的變化不會(huì)影響到調(diào)?它的客戶(hù)端;
  • 提高了靈活性,簡(jiǎn)化了客戶(hù)端對(duì)子系統(tǒng)的使用難度,客戶(hù)端無(wú)需關(guān)心子系統(tǒng)的具體實(shí)現(xiàn)方式,而只需要和門(mén)面對(duì)象交互即可.
  • 提高了安全性.可以靈活設(shè)定訪(fǎng)問(wèn)權(quán)限,不在門(mén)面對(duì)象中開(kāi)通?法,就無(wú)法訪(fǎng)問(wèn)

四、SLF4J框架

SLF4J就是其他日志框架的門(mén)面.SLF4J可以理解為是提供日志服務(wù)的統(tǒng)?API接?,并不涉及到具體的

日志邏輯實(shí)現(xiàn).

不引入日志門(mén)面

常見(jiàn)的日志框架有l(wèi)og4J,logback等.如果?個(gè)項(xiàng)目已經(jīng)使用了log4j,而你依賴(lài)的另?個(gè)類(lèi)庫(kù),假如是ApacheActiveMQ,它依賴(lài)于另外?個(gè)日志框架logback,那么你就需要把logback也加載進(jìn)去.

存在問(wèn)題

  • 不同日志框架的API接?和配置?件不同,如果多個(gè)日志框架共存,那么不得不維護(hù)多套配置?件(這個(gè)配置?件是指用戶(hù)?定義的配置?件).
  • 如果要更換日志框架,應(yīng)用程序?qū)⒉坏貌恍薷拇a,并且修改過(guò)程中可能會(huì)存在?些代碼沖突.
  • 如果引?的第三?框架,使用了多套,那就不得不維護(hù)多套配置.

引入日志門(mén)面

引?門(mén)面日志框架之后,應(yīng)?程序和日志框架(框架的具體實(shí)現(xiàn))之間有了統(tǒng)?的API接?(門(mén)面日志框架實(shí)現(xiàn)),此時(shí)應(yīng)?程序只需要維護(hù)?套日志?件配置,且當(dāng)?shù)讓訉?shí)現(xiàn)框架改變時(shí),也不需要更改應(yīng)?程序代碼

SLF4J就是這個(gè)日志門(mén)面.

總的來(lái)說(shuō),SLF4J使你的代碼獨(dú)立于任意?個(gè)特定的日志API,這是?個(gè)對(duì)于開(kāi)發(fā)API的開(kāi)發(fā)者很好的思想.

總結(jié)

日志是程序中的重要組成部分,使用日志可以快速的發(fā)現(xiàn)和定位問(wèn)題,SpringBoot內(nèi)容了日志框架,默認(rèn)情況下使用的是info日志級(jí)別將日志輸出到控制臺(tái)的,我們可以通過(guò)lombok提供的@Slf4j 注解和 log 對(duì)象快速的打印自定義日志.

日志包含6個(gè)級(jí)別,日志級(jí)別越高,收到的日志信息也就越少,我們可以通過(guò)配置日志的保存名稱(chēng)或保存目錄來(lái)將日志持久化

以上就是Spring Boot日志的策略解析與門(mén)面模式的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot日志的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Socket與ServerSocket類(lèi)構(gòu)造方法與API

    Socket與ServerSocket類(lèi)構(gòu)造方法與API

    今天小編為大家整理了Socket與ServerSocket類(lèi)構(gòu)造方法與API,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值。需要的朋友可以收藏下,方便下次瀏覽觀(guān)看
    2021-12-12
  • Java如何通過(guò)SSE實(shí)現(xiàn)消息推送詳解

    Java如何通過(guò)SSE實(shí)現(xiàn)消息推送詳解

    這篇文章主要介紹了Java如何通過(guò)SSE實(shí)現(xiàn)消息推送的相關(guān)資料,SSE是一種服務(wù)器向客戶(hù)端推送數(shù)據(jù)的技術(shù),基于HTTP協(xié)議,利用長(zhǎng)連接特性,它適用于單向數(shù)據(jù)流場(chǎng)景,如股票價(jià)格更新、新聞實(shí)時(shí)推送等,需要的朋友可以參考下
    2025-04-04
  • 詳解Java線(xiàn)程-守護(hù)線(xiàn)程與用戶(hù)線(xiàn)程

    詳解Java線(xiàn)程-守護(hù)線(xiàn)程與用戶(hù)線(xiàn)程

    這篇文章主要介紹了Java守護(hù)線(xiàn)程與用戶(hù)線(xiàn)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 你真的了解java單例模式了嗎?

    你真的了解java單例模式了嗎?

    這篇文章主要介紹了你真的了解java單例模式了嗎?實(shí)際上單例模式有著好幾個(gè)變種,并且多線(xiàn)程中涉及到線(xiàn)程安全問(wèn)題,,需要的朋友可以參考下
    2019-06-06
  • Jmeter中正則表達(dá)式提取器使用詳解

    Jmeter中正則表達(dá)式提取器使用詳解

    本文主要介紹了Jmeter中正則表達(dá)式提取器使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java IO流 文件的編碼實(shí)例代碼

    Java IO流 文件的編碼實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家介紹了java io流文件編碼的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-05-05
  • Java調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件

    Java調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件

    這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2025-03-03
  • MyBatis詳細(xì)講解DAO代理的使用

    MyBatis詳細(xì)講解DAO代理的使用

    MyBatis允許只聲明一個(gè)dao接口,而無(wú)需寫(xiě)dao實(shí)現(xiàn)類(lèi)的方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。前提是必須保證Mapper文件中的<mapper>標(biāo)簽的namespace屬性值必須要和dao接口的類(lèi)路徑一致,MyBatis容器會(huì)自動(dòng)通過(guò)動(dòng)態(tài)代理生成接口的實(shí)現(xiàn)類(lèi)
    2022-04-04
  • 教你如何使用Java輸出各種形狀

    教你如何使用Java輸出各種形狀

    本文小編將向大家介紹的是如何利用Java輸出各種不同的形狀,本文一共介紹了七種有趣的形狀,感興趣的小伙伴趕快收藏起來(lái)吧
    2021-09-09
  • 解決eclipse中console控制選項(xiàng)不見(jiàn)了的方法

    解決eclipse中console控制選項(xiàng)不見(jiàn)了的方法

    eclipse是一款用于編譯java語(yǔ)言的程序,利用這款軟件我們可以制作很多有趣的小程序,也可以制作一些大型的軟件項(xiàng)目,有的用戶(hù)在使用eclipse的時(shí)候會(huì)遇到console消失的情況,所以本文給大家介紹了解決eclipse中console控制選項(xiàng)不見(jiàn)了的方法,需要的朋友可以參考下
    2024-03-03

最新評(píng)論