自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Springboot這些強(qiáng)大的日志功能,你使用過(guò)嗎?

開(kāi)發(fā) 前端
日志配置詳解Spring Boot使用Commons Logging記錄所有內(nèi)部日志,但保留底層日志實(shí)現(xiàn)的打開(kāi)狀態(tài)。為JUL日志記錄、Log4J2和Logback提供了默認(rèn)配置。在每種情況下,記錄器都預(yù)先配置為使用控制臺(tái)輸出,還可以使用可選的文件輸出。

日志配置詳解

Spring Boot使用Commons Logging記錄所有內(nèi)部日志,但保留底層日志實(shí)現(xiàn)的打開(kāi)狀態(tài)。為JUL日志記錄、Log4J2和Logback提供了默認(rèn)配置。在每種情況下,記錄器都預(yù)先配置為使用控制臺(tái)輸出,還可以使用可選的文件輸出。

默認(rèn)情況下,如果使用 “Starters”,則使用Logback進(jìn)行日志記錄。還包括適當(dāng)?shù)腖ogback路由,以確保使用JUL日志、Commons Logging、Log4J或SLF4J的依賴庫(kù)都能正常工作。

Java有很多可用的日志框架。如果上面的列表令人困惑,請(qǐng)不要擔(dān)心。通常,您不需要更改日志依賴項(xiàng),Spring Boot默認(rèn)值也可以正常工作。

1.1 日志格式

Spring Boot的默認(rèn)日志輸出類似于以下示例:

2019-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2019-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
2019-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2019-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]輸出以下項(xiàng)目:

日期和時(shí)間:毫秒精度,易于排序。

日志級(jí)別:ERROR, WARN, INFO, DEBUG, or TRACE (錯(cuò)誤、警告、信息、調(diào)試或跟蹤) 。

進(jìn)程ID。

一個(gè)---分隔符,用于區(qū)分實(shí)際日志消息的開(kāi)始。

線程名稱:用方括號(hào)括起來(lái)(控制臺(tái)輸出可能會(huì)截?cái)啵?/p>

記錄器名稱:這通常是源類名稱(通常縮寫)。

日志消息。

1.2 控制臺(tái)輸出

默認(rèn)日志配置在寫入消息時(shí)將消息回顯到控制臺(tái)。默認(rèn)情況下,會(huì)記錄錯(cuò)誤級(jí)別error、警告級(jí)別warn和信息級(jí)別info的消息。你還可以通過(guò)使用--debug標(biāo)志啟動(dòng)應(yīng)用程序來(lái)啟用“debug”模式。

$ java -jar myapp.jar --debug

你還可以在application.properties中指定debug=true。

啟用debug模式時(shí),將配置一組核心記錄器(嵌入式容器、Hibernate和Spring Boot)以輸出更多信息。啟用debug模式不會(huì)將應(yīng)用程序配置為使用debug級(jí)別記錄所有消息?;蛘撸憧梢酝ㄟ^(guò)使用--trace標(biāo)志(或application.properties中的trace=true)啟動(dòng)應(yīng)用程序來(lái)啟用“trace”模式。這樣做可以為一系列核心記錄器(嵌入式容器、Hibernate模式生成和整個(gè)Spring產(chǎn)品組合)啟用跟蹤日志記錄。

1.3 彩色輸出日志

如果終端支持ANSI,則顏色輸出用于幫助可讀性??梢詫pring.output.ansi.enabled設(shè)置為支持的值以覆蓋自動(dòng)檢測(cè)。

使用%clr轉(zhuǎn)換字配置顏色編碼。在最簡(jiǎn)單的形式中,轉(zhuǎn)換器根據(jù)日志級(jí)別為輸出著色,如下例所示:

%clr(%5p)

下表描述了日志級(jí)別到顏色的映射:

Level

Color

FATAL

Red

ERROR

Red

WARN

Yellow

INFO

Green

DEBUG

Green

TRACE

Green

或者,您可以通過(guò)將顏色或樣式作為轉(zhuǎn)換選項(xiàng)來(lái)指定應(yīng)使用的顏色或樣式。例如,要使文本變?yōu)辄S色,請(qǐng)使用以下設(shè)置:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}

支持以下顏色和樣式:

  • blue
  • cyan
  • faint
  • green
  • magenta
  • red
  • yellow

具體顏色的配置可以在logback.xml或logback-spring.xml中配置,也可以在application.properties中配置

logging:
  pattern:
    console: '%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){Green} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}'

logback-spring.xml文件配置

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
   <encoder>
       <pattern>%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%green(%logger:%line) |%black(%msg%n)</pattern>
       <charset>UTF-8</charset>
   </encoder>
</appender>

1.4 日志輸出文件

默認(rèn)情況下,Spring Boot只將日志記錄到控制臺(tái),不寫入日志文件。如果要在控制臺(tái)輸出之外寫入日志文件,則需要設(shè)置logging.file.name或logging.file.path屬性(例如,在application.properties中)。

下表顯示了如何將logging.*屬性一起使用:

logging.file.name

logging.file.path

Example

Description

(none)

(none)


僅輸出到控制臺(tái)

Specific file

(none)

my.log

寫入指定的日志文件。名稱可以是精確的位置,也可以是相對(duì)于當(dāng)前目錄的。

(none)

Specific directory

/var/log

將'spring.log'寫入指定目錄。名稱可以是精確的位置,也可以是相對(duì)于當(dāng)前目錄的。

日志文件在達(dá)到10 MB時(shí)會(huì)旋轉(zhuǎn),并且與控制臺(tái)輸出一樣,默認(rèn)情況下會(huì)記錄錯(cuò)誤級(jí)別、警告級(jí)別和信息級(jí)別的消息。

注意:logging.file.name與logging.file.path 不能同時(shí)出現(xiàn)

示例:

logging:
  level:
    com.pack: info
    web: trace
  file:
    name: d:/logs/l.log

1.5 日志文件轉(zhuǎn)動(dòng)/交替

如果使用的是Logback,則可以使用application.properties或application.yaml文件微調(diào)日志轉(zhuǎn)動(dòng)/交替設(shè)置。對(duì)于所有其他日志系統(tǒng),你需要自己直接配置轉(zhuǎn)動(dòng)/交替設(shè)置(例如,如果使用Log4J2,則可以添加log4j.xml文件)。

支持以下輪換策略屬性:

Name

Description

logging.logback.rollingpolicy.file-name-pattern

用于創(chuàng)建日志存檔的文件名模式。

logging.logback.rollingpolicy.clean-history-on-start

如果在應(yīng)用程序啟動(dòng)時(shí)應(yīng)進(jìn)行日志歸檔清理。

logging.logback.rollingpolicy.max-file-size

歸檔前日志文件的最大大小。

logging.logback.rollingpolicy.total-size-cap

刪除日志存檔文件之前可以接受的最大大小。

logging.logback.rollingpolicy.max-history

保留日志存檔的天數(shù)(默認(rèn)為7)

如下:

logging:
  logback:
    rollingpolicy:
      max-file-size: 2KB

控制日志文件大小,不超過(guò)2KB,超過(guò)的自動(dòng)歸檔(生成壓縮包)

1.6 日志級(jí)別

所有受支持的日志記錄系統(tǒng)都可以通過(guò)使用logging.level.<logger name>=<level>在Spring環(huán)境中設(shè)置記錄器級(jí)別(例如,在application.properties中),其中級(jí)別是跟蹤trace、調(diào)試debug、信息info、警告warn、錯(cuò)誤error、致命fatal或關(guān)閉off之一??梢允褂胠ogging.level.root配置根日志記錄器。

以下示例顯示application.properties中的可能的日志記錄設(shè)置:

logging:
  level:
    root: "warn"
    org.springframework.web: "debug"
    org.hibernate: "error"
    com.pack: "error"

還可以使用環(huán)境變量設(shè)置日志記錄級(jí)別。例如,日志記錄_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG將ORG.SPRINGFRAMEWORK.WEB設(shè)置為DEBUG。

1.7 日志分組

能夠?qū)⑾嚓P(guān)的記錄器分組在一起通常很有用,這樣就可以同時(shí)對(duì)它們進(jìn)行配置。例如,你可能通常會(huì)更改所有Tomcat相關(guān)記錄器的日志記錄級(jí)別,但你無(wú)法輕松記住頂級(jí)軟件包。為了幫助實(shí)現(xiàn)這一點(diǎn),SpringBoot允許你在Spring環(huán)境中定義日志記錄組。例如,你可以通過(guò)將“tomcat”組添加到application.properties來(lái)定義它:

logging:
  group:
    tomcat: "org.apache.catalina,org.apache.coyote,org.apache.tomcat" #這里如果配置了會(huì)報(bào)錯(cuò),應(yīng)該還需要配置什么吧。

通過(guò)上面的定義后,你可以使用一行更改組中所有記錄器的級(jí)別:

logging:
  level:
    tomcat: "trace"

Spring Boot包括以下可開(kāi)箱即用的預(yù)定義日志組:

Name

Loggers

web

org.springframework.core.codecorg.springframework.httporg.springframework.weborg.springframework.boot.actuate.endpoint.weborg.springframework.boot.web.servlet.ServletContextInitializerBeans

sql

org.springframework.jdbc.coreorg.hibernate.SQLorg.jooq.tools.LoggerListener

這兩個(gè)非常有用。

1.8 自定義日志配置

可以通過(guò)在類路徑上包含適當(dāng)?shù)膸?kù)來(lái)激活各種日志記錄系統(tǒng),還可以通過(guò)在類路徑的根目錄中或以下Spring環(huán)境屬性指定的位置提供適當(dāng)?shù)呐渲梦募?lái)進(jìn)一步定制:logging.config。

通過(guò)使用org.springframework.Boot.logging.LoggingSystem屬性,可以強(qiáng)制Spring引導(dǎo)使用特定的日志系統(tǒng)。該值應(yīng)該是LoggingSystem實(shí)現(xiàn)的完全限定類名。您還可以使用none值完全禁用Spring Boot的日志記錄配置。

由于日志記錄是在創(chuàng)建ApplicationContext之前初始化的,因此無(wú)法從Spring的@Configuration文件中的@PropertySources控制日志記錄。更改或完全禁用日志系統(tǒng)的唯一方法是通過(guò)系統(tǒng)屬性。

根據(jù)你的日志記錄系統(tǒng),將加載以下文件:

日志系統(tǒng)

定制

Logback

logback-spring.xmllogback-spring.groovylogback.xml, or logback.groovy

Log4j2

log4j2-spring.xml or log4j2.xml

JDK (Java Util Logging)

logging.properties

如果可能,我們建議您在日志配置中使用-spring變體(例如,logback-spring.xml而不是logback.xml)。如果使用標(biāo)準(zhǔn)配置位置,Spring無(wú)法完全控制日志初始化。

為了幫助進(jìn)行自定義,其他一些屬性將從Spring環(huán)境傳輸?shù)较到y(tǒng)屬性,如下表所述:

Spring Environment

System Property

Comments

logging.exception-conversion-word

LOG_EXCEPTION_CONVERSION_WORD

記錄異常時(shí)使用的轉(zhuǎn)換字。

logging.file.name

LOG_FILE

如果已定義,則在默認(rèn)日志配置中使用。

logging.file.path

LOG_PATH

如果已定義,則在默認(rèn)日志配置中使用。

logging.pattern.console

CONSOLE_LOG_PATTERN

要在控制臺(tái)(stdout)上使用的日志模式。

logging.pattern.dateformat

LOG_DATEFORMAT_PATTERN

日志日期格式的追加器模式。

logging.charset.console

CONSOLE_LOG_CHARSET

用于控制臺(tái)日志記錄的字符集。

logging.pattern.file

FILE_LOG_PATTERN

要在文件中使用的日志模式(如果啟用了“日志文件”)。

logging.charset.file

FILE_LOG_CHARSET

用于文件記錄的字符集(如果啟用了LOG_FILE)。

logging.pattern.level

LOG_LEVEL_PATTERN

呈現(xiàn)日志級(jí)別時(shí)要使用的格式(默認(rèn)為%5p)。

PID

PID

當(dāng)前進(jìn)程ID(如果可能,在尚未定義為OS環(huán)境變量時(shí)發(fā)現(xiàn))。

上面這些屬性(System Property)我們可以在logback-spring.xml文件中直接引用,如下:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
   <encoder>
       <pattern>[${PID}] - [${LOG_FILE}] - [${LOG_LEVEL_PATTERN}] %yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-6level) |%green(%logger:%line) |%black(%msg%n)</pattern>
       <charset>UTF-8</charset>
   </encoder>
</appender>

配置logging.pattern.level 屬性

logging:
  pattern:
    level: INFO

輸出:

[13036] - [d:/logs/l.log] - [INFO] ?[33m2021-09-23 14:34:02?[0;39m |?[34mINFO  ?[0;39m

如果使用的是Logback,則還會(huì)傳輸以下屬性:

Spring Environment

System Property

Comments

logging.logback.rollingpolicy.file-name-pattern

LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN

滾動(dòng)日志文件名的模式 (default ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz).

logging.logback.rollingpolicy.clean-history-on-start

`LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START

是否在啟動(dòng)時(shí)清理歸檔日志文件。

logging.logback.rollingpolicy.max-file-size

LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE

最大日志文件大小。

logging.logback.rollingpolicy.total-size-cap

LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP

要保留的日志備份的總大小。

logging.logback.rollingpolicy.max-history

`LOGBACK_ROLLINGPOLICY_MAX_HISTORY

要保留的最大歸檔日志文件數(shù)。

所有受支持的日志系統(tǒng)在解析其配置文件時(shí)都可以查閱系統(tǒng)屬性。有關(guān)示例,請(qǐng)參閱spring-boot.jar中的默認(rèn)配置:

  • Logback
  • Log4j 2
  • Java Util logging

1.9 Logback擴(kuò)展

Spring Boot包括許多對(duì)Logback的擴(kuò)展,這些擴(kuò)展可以幫助進(jìn)行高級(jí)配置。你可以在logback-spring.xml配置文件中使用這些擴(kuò)展名。

因?yàn)闃?biāo)準(zhǔn)logback.xml配置文件加載得太早,所以不能在其中使用擴(kuò)展名。您需要使用logback-spring.xml或定義logging.config屬性。

1.9.1 配置文件特定配置

<springProfile>標(biāo)記允許你根據(jù)活動(dòng)的Spring配置文件選擇性地包括或排除配置部分。配置文件部分在<configuration>元素中的任何位置都受支持。使用name屬性指定接受配置的配置文件。<springProfile>標(biāo)記可以包含配置文件名稱(例如staging)或配置文件表達(dá)式。配置文件表達(dá)式允許表達(dá)更復(fù)雜的配置文件邏輯,例如生產(chǎn) 和(central | west)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱參考指南。以下列表顯示了三個(gè)示例配置文件:

<springProfile name="staging">
   <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>


<springProfile name="dev | staging">
   <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>


<springProfile name="!production">
   <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

1.9.2 環(huán)境屬性

<springProperty>標(biāo)記允許你公開(kāi)Spring環(huán)境中的屬性,以便在Logback中使用。如果你想從Logback配置中的application.properties文件中訪問(wèn)值,那么這樣做很有用。該標(biāo)記的工作方式與Logback的標(biāo)準(zhǔn)<property>標(biāo)記類似。但是,你可以指定屬性的源(來(lái)自環(huán)境),而不是指定直接值。如果需要將屬性存儲(chǔ)在本地范圍以外的其他位置,可以使用scope屬性。如果需要回退值(在環(huán)境中未設(shè)置屬性的情況下),可以使用defaultValue屬性。以下示例顯示了如何公開(kāi)在Logback中使用的屬性:

示例:

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
       defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
   <remoteHost>${fluentHost}</remoteHost>
  ...
</appender>

配置文件配置自定義屬性:

custom:
  props:
    host: 127.0.0.1

日志文件定義(logback-spring.xml):

<springProperty scope="context" name="host" source="custom.props.host" defaultValue="localhost"/>

日志文件中使用

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>[${host}] - [${PID}] - [${LOG_FILE}] - [${LOG_LEVEL_PATTERN}] %yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-6level) |%green(%logger:%line) |%black(%msg%n)</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appende>

測(cè)試輸出:

[127.0.0.1] - [23188] - [d:/logs/l.log] - [INFO] ?[33m2021-09-23 14:46:46?[0;39m
責(zé)任編輯:武曉燕 來(lái)源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2023-11-22 07:42:01

2019-03-18 15:56:56

IntelAMDCPU

2024-03-21 10:39:24

CIOAI

2023-01-28 09:38:48

接口SpringMVC

2024-07-02 11:06:37

SpringBoot項(xiàng)目

2022-03-18 08:00:48

Chrome工具前端

2021-04-05 22:33:24

Windows 10Windows微軟

2021-10-21 08:13:11

Springboot

2020-09-21 14:55:15

數(shù)據(jù)庫(kù)SQL技術(shù)

2021-05-21 13:36:46

iOSiPhone功能

2021-03-20 07:20:49

Windows10操作系統(tǒng)微軟

2019-05-22 10:25:50

人工智能AI

2021-05-31 05:12:11

Edge微軟瀏覽器

2022-05-05 07:25:03

Supervisor監(jiān)控Python

2024-03-26 10:10:45

JavaScript操作符操作表達(dá)式

2022-09-07 09:01:14

JS操作符運(yùn)算符

2025-01-28 00:00:00

OpenFeign接口依賴

2019-08-27 15:12:12

Linux操作系統(tǒng)Windows

2024-09-05 09:25:59

SpringUserDAO接口

2021-05-24 05:36:31

壓縮圖片應(yīng)用壓縮工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)