国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(七)SpringBoot日志配置

這篇具有很好參考價值的文章主要介紹了深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(七)SpringBoot日志配置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

SpringBoot 官方文檔:https://docs.spring.io/spring-boot/docs/2.7.12/reference/htmlsingle

SpringBoot 底層依賴

Spring Boot 對所有內(nèi)部日志記錄使用 Commons Logging,但使底層日志實(shí)現(xiàn)保持為打開狀態(tài)。 為 Java Util Logging、Log4J2 和 Logback 提供了默認(rèn)配置。默認(rèn)情況下,Logback、 Java Util Logging、Commons Logging、Log4J 或 SLF4J 都能正常工作。而 Spring Boot 中使用了 SLF4J + Logback 作為默認(rèn)的日志框架,因此我們不需要更改日志記錄依賴項(xiàng),Spring 引導(dǎo)默認(rèn)值就可以正常工作。SpringBoot 底層日志依賴關(guān)系如圖所示:

深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(七)SpringBoot日志配置

spring-boot-starter 依賴下有 spring-boot-starter-logging 日志依賴,后續(xù)的 logback-core、logback-core 依賴即使用 Logback 記錄日志,而 jul-to-slf4j、log4j-to-slf4j 即將 JULLog4j 日志框架轉(zhuǎn)為 Slf4j 日志框架,即所謂的橋接器。

日志組

我們也可以將相關(guān)的日志記錄器組合在一起,以便可以同時配置它們。例如,可能經(jīng)常更改所有與 Tomcat 相關(guān)的記錄器的日志記錄級別,我們可以在 YAML 配置文件中將與 Tomcat 相關(guān)的包添加成一個組,之后再對組設(shè)置日志輸出的級別:

logging:
  group:
    # 自定義組名,設(shè)置當(dāng)前組中所包含的包
    tomcat: org.apache.catalina,org.apache.coyote,org.apache.tomcat

SpringBoot 包括以下預(yù)定義的日志記錄組:

Name Loggers
web org.springframework.core.codec
org.springframework.http
org.springframework.web
org.springframework.boot.actuate.endpoint.web
org.springframework.boot.web.servlet.ServletContextInitializerBeans
org.springframework.core.codec
org.springframework.http
org.springframework.web
org.springframework.boot.actuate.endpoint.web
org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql org.springframework.jdbc.core
org.hibernate.SQL
org.jooq.tools.LoggerListener
org.springframework.jdbc.core
org.jooq.tools.LoggerListener

日志級別

在SpringBoot 中,日志的級別默認(rèn)分為7個級別:TRACE(跟蹤)、DEBUG(調(diào)試)、 INFO(信息)、WARN(警告)、ERROR(錯誤)、FATAL(致命)、OFF(關(guān)閉)。

我們可以根據(jù)需要設(shè)置不同的日志級別,在 SpringBoot 的 YAML 配置文件中對所有的日志框架輸出的日志級別進(jìn)行設(shè)置。我們可以對全局或者指定分組以及指定包分別設(shè)置日志的輸出級別:

logging:
  level:
    # 設(shè)置root根節(jié)點(diǎn)級別,即整體應(yīng)用日志級別,輸出 WARN 級別及以上的日志信息
    root: warn
    # 為對應(yīng)組設(shè)置日志級別,輸出 TRACE 級別及以上的日志信息
    tomcat: trace
    # 為對包設(shè)置日志級別,輸出 DEBUG 級別及以上的日志信息
    com.example.logging: debug

日志格式

在配置文件中設(shè)置日志的輸出格式:

# 設(shè)置日志輸出格式
logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}] - %msg%n"

SpringBoot 的默認(rèn)日志輸出格式如下:

深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(七)SpringBoot日志配置

輸出格式如下:

輸出項(xiàng) 描述
Date and Time 日期和時間:毫秒級精度,易于排序
Log Level 日志級別:ERROR WARN INFO DEBUG TRACE
Process ID 進(jìn)程 Id
--- 用于區(qū)分實(shí)際日志消息開頭的分隔符
Thread name 線程名,括在方括號中(對于控制臺輸出,可能會被截斷)
Logger name 記錄器名稱:通常是源類名稱(通常縮寫)
message 日志消息

常用占位符如下:

占位符 描述
%d 表示輸出到毫秒的時間,例如%d{yyyy-MM-dd HH:mm:ss.SSS}
%-5level 輸出日志級別,-5表示左對齊并且固定輸出5個字符,如果不足在右邊補(bǔ)0
%n 輸出換行符
%thread 輸出日志的線程名稱,例如:main
%logger 輸出日志記錄器名稱,例如:com.example.MyClass
%msg 輸出日志的消息內(nèi)容
%X 輸出 MDC(Mapped Diagnostic Context)中的鍵值對,例如:%X{user}
%class 輸出日志的類名,例如:com.example.MyClass
%method 輸出日志的方法名,例如:doSomething
%file 輸出日志的文件名,例如:MyClass.java
%line 例如:10
%color() 顏色:%black、%shired、%green、%yellow、%blue、%magenta、%cyan、%white、%gray、%boldRed、%boldGreen、%boldYellow、%boldBlue、%boldMagenta、%boldCyan、%boldWhite、%highlight

以上是一些常用的占位符,可以根據(jù)需要自行組合使用。

Spring Boot使用Logback作為默認(rèn)的日志框架,可以通過在application.properties或application.yml文件中設(shè)置日志級別和日志輸出格式。

以下是application.yml中常用的日志配置選項(xiàng):

# 設(shè)置日志輸出文件的路徑和名稱
logging:
  file:
    name: myapp.log
    path: /var/log/myapp/

以上示例中,logging.level 設(shè)置日志級別,logging.pattern設(shè)置日志輸出格式,logging.file.name和logging.file.path設(shè)置日志輸出文件的路徑和名稱。需要注意的是,如果同時設(shè)置了logging.file和logging.path選項(xiàng),則logging.file選項(xiàng)將覆蓋logging.path選項(xiàng)。

文件輸出

SpringBoot 默認(rèn)會將日志輸出到控制臺,并不會寫入日志文件。 如果我們需要將日志寫入日志文件,則需要在 application.yml 中進(jìn)行相關(guān)配置:

# 設(shè)置日志輸出文件的路徑和名稱
logging:
  file:
    name: myapp.log
    path: /var/log/myapp/
logging.file.name logging.file.path 樣例 描述
(無) (無) 僅控制臺日志記錄。
特定文件 (無) my.log 寫入指定的日志文件。 名稱可以是確切的位置,也可以是相對于當(dāng)前目錄的位置。
(無) 特定目錄 /var/log 寫入指定的目錄。 名稱可以是確切的位置,也可以是相對于當(dāng)前目錄的位置。spring.log

Tip

logging.file.name 和 logging.file.path 設(shè)置日志輸出文件的路徑和名稱。需要注意的是,如果同時設(shè)置了logging.file 和 logging.path 選項(xiàng),則 logging.file 選項(xiàng)將覆蓋 logging.path 選項(xiàng)。

自定義日志配置

在 SpringBoot 中,我們除了使用默認(rèn)的配置外,還可以通過在 src/main/resources 目錄下添加自定義日志配置文件來自定義日志輸出的格式、級別、以及日志文件的位置等信息。

方式1:限定文件名

通過 SpringBoot 指定限定名的方式:項(xiàng)目啟動時會自動進(jìn)行加載:

日志框架 配置文件名
Logback logback-spring.xml、logback.xml
Log4j2 log4j2-spring.xmllog4j2.xml
Log4j log4j.properties
JDK (Java Util Logging) logging.properties

使用該方式,Spring 官方推薦建議您我們使用 *-spring.xml 的限定名,這樣可以交由 SpringBoot 控制日志,我們也可以對其中的配置進(jìn)行更加細(xì)化的設(shè)置:

<springProfile name="dev">
    <!-- 配置項(xiàng)在 spring.profiles.active=dev 的環(huán)境下啟動 -->
</springProfile>
<springProfile name="!dev">
    <!-- 配置項(xiàng)在 spring.profiles.active!=dev 的環(huán)境下啟動 -->
</springProfile>

方式2:自定義文件名

以下是自定義日志文件名的步驟:

  1. 在 src/main/resources 目錄下創(chuàng)建一個名為 logback-dev.xml 的文件,這個文件名稱可以自定義。
  2. 在配置文件中指定日志配置文件:
logging.config=classpath:logging-config.xml

日志框架切換

Logback To Log4j

原理圖如右圖:

深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(七)SpringBoot日志配置

方式1

我們需要將對應(yīng) logback 框架的依賴進(jìn)行移除,添加 slf4j-log4j12 的適配器即可。

深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(七)SpringBoot日志配置

  1. 移除日志框架 logback 的依賴:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <exclusion>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    
  2. 引入適配器 slf4j-log4j12log4j 的依賴

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
    </dependency>
    

方式2

  1. 移除 spring-boot-starter-logging 依賴:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    
  2. 添加 spring-boot-starter-log4j 依賴:

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j</artifactId>
      <version>1.3.8.RELEASE</version>
    </dependency>
    

添加 log4j.properties 配置文件

log4j 不提供默認(rèn)配置,因?yàn)檩敵龅娇刂婆_或者文件系統(tǒng)在某些環(huán)境中可能是被禁止的。所以需要在 resources 目錄下手動添加配置文件,配置文件名為 log4j.properties。

Logback To Log4j2

同理,我們需要排除原有的依賴,替換新的依賴即可:

  1. 移除依賴

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    
  2. 添加依賴

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    
  3. 需要異步

    <!--開啟異步時需要導(dǎo)入依賴-->
    <dependency>
      <groupId>com.lmax</groupId>
      <artifactId>disruptor</artifactId>
      <version>3.4.2</version>
    </dependency>
    

添加配置文件

有關(guān)部分請查看文章:深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(五)Log4j2配置文件詳解文章來源地址http://www.zghlxwxcb.cn/news/detail-492152.html

到了這里,關(guān)于深入理解 SpringBoot 日志框架:從入門到高級應(yīng)用——(七)SpringBoot日志配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • “深入理解Spring框架的核心原理與應(yīng)用“

    標(biāo)題:深入理解Spring框架的核心原理與應(yīng)用 摘要:本文旨在深入探討Spring框架的核心原理與應(yīng)用。我們將介紹Spring框架的主要特點(diǎn)、IOC容器的工作原理、AOP的實(shí)現(xiàn)方式以及Spring MVC的應(yīng)用等內(nèi)容,并通過示例代碼來演示Spring框架的使用。 Spring框架是一款非常流行的Java開發(fā)框架

    2024年02月16日
    瀏覽(22)
  • “深入理解SpringBoot:從入門到精通的幾個關(guān)鍵要點(diǎn)“

    標(biāo)題:深入理解Spring Boot:從入門到精通 摘要:本文將深入探討Spring Boot的關(guān)鍵要點(diǎn),幫助讀者從入門到精通。我們將從Spring Boot的基本概念開始,介紹自動配置、起步依賴、注解驅(qū)動開發(fā)等特性,并通過示例代碼演示如何使用Spring Boot構(gòu)建一個簡單的Web應(yīng)用程序。 正文: S

    2024年02月14日
    瀏覽(25)
  • SpringBoot篇——SpringBoot微服務(wù)理解、SpringBoot和SSM框架區(qū)別等技術(shù)點(diǎn),帶你入門SpringBoot,一篇搞定!

    SpringBoot篇——SpringBoot微服務(wù)理解、SpringBoot和SSM框架區(qū)別等技術(shù)點(diǎn),帶你入門SpringBoot,一篇搞定!

    一、什么是為微服務(wù) 微服務(wù)是一種 架構(gòu)風(fēng)格 ,打破了all in one的架構(gòu)方式,它要求我們在開發(fā)一個應(yīng)用的時候,這個應(yīng)用必須構(gòu)建成一系列小服務(wù)的組合。 可以通過http的方式進(jìn)行互通,服務(wù)可以獨(dú)立部署和擴(kuò)展,每個服務(wù)都提供一個堅(jiān)實(shí)的模塊邊界,甚至不同的服務(wù)可以用

    2024年02月04日
    瀏覽(65)
  • 深入理解Nginx日志級別

    Nginx 是一個高性能的 HTTP 和反向代理服務(wù)器,廣泛用于提供網(wǎng)站和應(yīng)用服務(wù)。它的強(qiáng)大功能之一是靈活的日志記錄能力,允許管理員根據(jù)需要配置不同的日志級別。正確理解和使用這些日志級別對于監(jiān)控、調(diào)試和保障你的服務(wù)穩(wěn)定運(yùn)行至關(guān)重要。本文旨在深入介紹 Nginx 支持的

    2024年03月13日
    瀏覽(29)
  • 深入理解Matplotlib:實(shí)現(xiàn)高級數(shù)據(jù)可視化

    Matplotlib 是一款極其強(qiáng)大的 Python 數(shù)據(jù)可視化庫。盡管其使用起來可能稍顯復(fù)雜,但無疑,Matplotlib 是創(chuàng)建高質(zhì)量圖形的關(guān)鍵工具之一。在上一篇文章中,我們介紹了 Matplotlib 的基礎(chǔ)知識,包括創(chuàng)建和自定義基礎(chǔ)圖形等。而在這篇文章中,我們將深入討論 Matplotlib 的一些高級特

    2024年02月16日
    瀏覽(25)
  • 深入理解高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard)

    深入理解高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard)

    title: 深入理解高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard) date: 2024/4/23 20:04:36 updated: 2024/4/23 20:04:36 tags: AES概述 加密原理 優(yōu)勢特點(diǎn) 算法詳解 安全性 應(yīng)用實(shí)踐 案例分析 AES的歷史和背景 歷史: ?高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)是一種對稱密鑰加密標(biāo)準(zhǔn),由美國國(A

    2024年04月24日
    瀏覽(26)
  • 深入理解Python中的日志記錄(Logging)

    深入理解Python中的日志記錄(Logging)

    ??? 個人主頁 :xmp65535 ??? 專欄 :python技術(shù)專欄 目錄 一、Python Logging 模塊概述 二、相關(guān)組件 Logger Handler Formatter Filter LogRecord Level 三、基本配置 Formatters格式: 四、記錄日志 五、日志記錄者(Loggers) logging.getLogger(name=None) 六、處理器(Handlers) logging.Handler() RotatingFileHand

    2024年04月23日
    瀏覽(34)
  • 深入理解Spring EL表達(dá)式的高級功能

    深入理解Spring EL表達(dá)式的高級功能

    歡迎來到我的博客,代碼的世界里,每一行都是一個故事 EL表達(dá)式不僅僅局限于基礎(chǔ)用法,它還提供了豐富的高級功能。在這篇博客中,我們將揭開這些功能的神秘面紗,讓你成為EL表達(dá)式的真正大師。 在EL(Expression Language)表達(dá)式中,可以使用各種操作符和語法來操作集合

    2024年01月25日
    瀏覽(28)
  • Linux 深入理解Linux文件系統(tǒng)與日志分析

    Linux 深入理解Linux文件系統(tǒng)與日志分析

    文件數(shù)據(jù) 包含 元信息(即不包含文件名的文件屬性) ? ?和? ? 實(shí)際數(shù)據(jù) 文件元信息存儲在 inode(索引節(jié)點(diǎn))里, 文件實(shí)際數(shù)據(jù)存儲在 block(塊)里; 文件名存儲在目錄塊里 stat? 文件名 ? stat? 文件名? ? ? ls -i 文件名 ? df -i Linux系統(tǒng)不使用 文件名 識別文件,而 使用 inode號 來識

    2024年04月25日
    瀏覽(27)
  • 【Java-14】3萬字深入理解HashMap集合(高級)

    【Java-14】3萬字深入理解HashMap集合(高級)

    ? HashMap基于哈希表的Map接口實(shí)現(xiàn),是以key-value存儲形式存在,即主要用來存放鍵值對。HashMap 的實(shí)現(xiàn)不是同步的,這意味著它不是線程安全的。它的key、value都可以為null。此外,HashMap中的映射不是有序的。 ? JDK1.8 之前 HashMap 由 數(shù)組+鏈表 組成的,數(shù)組是 HashMap 的主體,鏈

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包