最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot日志的策略解析與門面模式

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

一、日志的概念

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

日志的用途:

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

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

2.1、日志的格式

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

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

2.2、日志級別

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

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

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

日志級別的順序:

級別越高,收到的消息越少

2.3、日志的使用

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

添加lombok依賴

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

輸出?志

lombok提供的 @Slf4j 會幫我們提供?個日志對象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)容----------------");
	}
}

三、門面模式(外觀模式)

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

門面模式定義

門面模式(FacadePattern)?稱為外觀模式,提供了?個統(tǒng)?的接口,用來訪問子系統(tǒng)中的?群接口.

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

原文:Provideaunifiedinterfacetoasetofinterfacesinasubsystem.Facadedefinesahigherlevelinterfacethatmakesthesubsystemeasiertouse.

解釋:要求?個?系統(tǒng)的外部與其內(nèi)部的通信必須通過?個統(tǒng)?的對象進(jìn)?.門面模式提供?個?層 次的接?,使得?系統(tǒng)更易于使?.

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

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

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

場景:回家,我們會開各個屋的燈.離開家時,會關(guān)閉各個屋的燈 如果家?設(shè)置?個總開關(guān),來控制整個屋的燈就會很方便.

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

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

四、SLF4J框架

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

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

不引入日志門面

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

存在問題

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

引入日志門面

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

SLF4J就是這個日志門面.

總的來說,SLF4J使你的代碼獨(dú)立于任意?個特定的日志API,這是?個對于開發(fā)API的開發(fā)者很好的思想.

總結(jié)

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

日志包含6個級別,日志級別越高,收到的日志信息也就越少,我們可以通過配置日志的保存名稱或保存目錄來將日志持久化

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

相關(guān)文章

  • 如何給HttpServletRequest增加消息頭

    如何給HttpServletRequest增加消息頭

    這篇文章主要介紹了如何給HttpServletRequest增加消息頭的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中synchronized的幾種使用方法

    Java中synchronized的幾種使用方法

    本文主要介紹了Java中synchronized的幾種使用方法,synchronized可用于修飾普通方法、靜態(tài)方法和代碼塊,下面詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-05-05
  • 關(guān)于RabbitMQ的Channel默認(rèn)線程

    關(guān)于RabbitMQ的Channel默認(rèn)線程

    這篇文章主要介紹了關(guān)于RabbitMQ的Channel默認(rèn)線程,通過jvm工具觀察rabbitmq的線程使用情況,發(fā)現(xiàn)生產(chǎn)者每發(fā)一條消息,消費(fèi)者這邊就會創(chuàng)建一條線程,言下之意,一個channel當(dāng)消息來到時就會異步處理這些消息,需要的朋友可以參考下
    2023-09-09
  • 老生常談Java中List與ArrayList的區(qū)別

    老生常談Java中List與ArrayList的區(qū)別

    大家都知道List是接口,ArrayList是List接口的一個實(shí)現(xiàn)類,接下來通過本文給大家介紹Java中List與ArrayList的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • MyBatis中$和#的深入講解

    MyBatis中$和#的深入講解

    這篇文章主要給大家介紹了關(guān)于MyBatis中$和#的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • java中的Lambda表達(dá)式使用及說明

    java中的Lambda表達(dá)式使用及說明

    文章介紹了Java?8中Lambda表達(dá)式的基本概念及其在Stream流操作中的應(yīng)用,Lambda表達(dá)式簡化了函數(shù)式接口的實(shí)現(xiàn),與Stream結(jié)合使用更流暢,文章還提供了Lambda表達(dá)式的各種簡化技巧和注意事項,如方法引用、變量捕獲規(guī)則以及異常處理等
    2026-05-05
  • java反射機(jī)制實(shí)戰(zhàn)示例分享

    java反射機(jī)制實(shí)戰(zhàn)示例分享

    這篇文章主要介紹了java反射機(jī)制實(shí)戰(zhàn)示例,需要的朋友可以參考下
    2014-03-03
  • 簡單分析java中CMS回收器

    簡單分析java中CMS回收器

    在本篇文章里我們給大家分享了關(guān)于java中CMS回收器的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2018-10-10
  • Java如何固定大小的線程池

    Java如何固定大小的線程池

    這篇文章主要介紹了Java固定大小的線程池操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java 利用反射機(jī)制,獲取實(shí)體所有屬性和方法,并對屬性賦值

    java 利用反射機(jī)制,獲取實(shí)體所有屬性和方法,并對屬性賦值

    這篇文章主要介紹了 java 利用反射機(jī)制,獲取實(shí)體所有屬性和方法,并對屬性賦值的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評論

龙州县| 信宜市| 宁安市| 都昌县| 邮箱| 柘城县| 加查县| 安丘市| 荣昌县| 昌黎县| 上饶市| 新民市| 三台县| 屏南县| 石狮市| 武宁县| 防城港市| 酉阳| 富民县| 新疆| 平凉市| 临桂县| 沙湾县| 望谟县| 梧州市| 从江县| 阳春市| 邢台市| 宁明县| 霍城县| 文山县| 新平| 闻喜县| 深圳市| 金门县| 绥棱县| 云龙县| 云和县| 温州市| 墨脱县| 红原县|