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

今天又學(xué)了 Spring Boot logging,你學(xué)會了嗎?

開發(fā) 前端
spring boot 內(nèi)部使用的是 apache 開源的 commons logging 來記錄日志的。但是呢,它又提供了基礎(chǔ)的日志實現(xiàn)接口,方便向 java util logging、 log4j、logback之類的接入。spring boot 現(xiàn)在已經(jīng)為 Java util logging 、log4j2、logback 提供了默認(rèn)的實現(xiàn)。我們?nèi)绻枰褂玫脑挘灰唵闻渲镁涂梢粤恕?/div>

大家好,我是指北君。

今天指北君將要帶實習(xí)生來了解下 Spring Boot 中日志框架的使用。

實習(xí)生:大佬好,今天你要講什么呀?

指北君:今天跟你講講 Spring Boot 日志是怎么回事的,先看下我整理的思維導(dǎo)圖吧。

圖片

今天就從這幾個角度來講。

實習(xí)生:好的,那我們先來看看概述吧。

圖片

指北君:spring boot 內(nèi)部使用的是 apache 開源的 commons logging 來記錄日志的。但是呢,它又提供了基礎(chǔ)的日志實現(xiàn)接口,方便向 java util logging、 log4j、logback之類的接入。spring boot 現(xiàn)在已經(jīng)為 Java util logging 、log4j2、logback 提供了默認(rèn)的實現(xiàn)。我們?nèi)绻枰褂玫脑挘灰唵闻渲镁涂梢粤恕?/p>

實習(xí)生:要這么說的話,spring boot 可真nb啊,輕輕松松就搞定了。你剛剛說了 spring boot 已經(jīng)內(nèi)置實現(xiàn)了 logback 這些, 那我看你圖里還有starter的描述啊,默認(rèn)所有的都夾在進(jìn)來了嗎?

指北君:小伙子可以啊,spring boot 當(dāng)然沒有把所有的都加載進(jìn)來,條件自動化配置你忘記了嗎?如果我們項目只依賴了一個 spring-boot-starter 的話,你看我這個項目的依賴圖,自由這么幾個,如果你想依賴 log4j2 的話,你要添加 spring-boot-starter-log4j2 才行。

圖片

實習(xí)生:soga, 我懂了。

指北君:我們來看看日志的輸出格式是怎么樣的。我們平時啟動項目的時候,在控制臺上看到的這些內(nèi)容,是有固定的格式的。

圖片

一開始是日期和時間,然后是日志的等級、線程ID、分割線、線程名稱、logger name 、日志消息。我在思維導(dǎo)圖里做了歸納, 日志等級這里我使用的是logback的等級制度,部分其他的會是以FATAL 代替 ERROR 的。

圖片

實習(xí)生:這個挺簡單的呀。你這么一畫,我感覺很清晰啊。你看這個終端輸出那里有不同的顏色,這個是怎么配置的呢?

指北君:不要著急啊, 你看我的思維導(dǎo)圖,下一個環(huán)節(jié)不就是要講了嗎?

圖片

默認(rèn)情況下,spring boot 項目的日志輸出方式是控制臺輸出??刂婆_輸出一般情況下只有3中輸出方式,就是上面寫的 ERROR、WARN、INFO。因為打開debug的話,所有其他的日志都會打出來,對我們開發(fā)來說不太方便。

實習(xí)生:那這個還是可以打開的吧,或者我想調(diào)試spring boot 的啟動過程之類的,我就想把它打開,這樣我對啟動過程可以看的更加清楚一些。

指北君:是的,你可以打開,而且也挺方便的。有兩種方式,第一種方式就是通過命令行設(shè)置

java -jar myapp.jar --debug

第二種:在配置文件里直接配置就行

application.properties 配置 debug=true

至于,剛才你說到的顏色問題,其實也蠻簡單的,如果你的控制臺支持 ASNI 的話,就配置一下就可以了,主要是配置%clr 這個輕輕松松搞定了。直接看思維導(dǎo)圖就行了。

實習(xí)生:你說的沒錯,但是我還有一個疑問,ASNI是什么?

指北君:這玩意就是一種編碼方式,一句兩句也講不清楚,我給你搜索一下吧。

ANSI是一種字符代碼,為使計算機(jī)支持更多語言,通常使用 0x00~0x7f 范圍的1 個字節(jié)來表示 1 個英文字符。超出此范圍的使用0x80~0xFFFF來編碼,即擴(kuò)展的ASCII編碼。

指北君:接下來我們看看文件輸出日志的配置,默認(rèn)情況下我們只要在applicaiton.properties文件直接配置就行了。

logging.file.name=app.log
logging.file.path=/xxx

實習(xí)生:這個我知道,但是你導(dǎo)圖上寫的文件分割,又是怎么回事呢?

圖片

指北君:這個你都沒懂嗎?我們?nèi)罩緦懭氲轿募镏螅绻覀儾惶幚淼脑?,文件可以把你電腦寫爆了。另一方面,方便我們處理日志文件啊。

實習(xí)生:好的,大佬我錯了。我怎么沒想到呢。

指北君:別扯這些,我們繼續(xù)來看。

圖片

實習(xí)生:你這個寫的啥意思???沒懂,上面不是講過了,再講一遍?

指北君:上面只是提了下等級,并沒有提怎么設(shè)置,你看仔細(xì)了,我們可以針對某個package來設(shè)置日志輸出的等級。

實習(xí)生:唉,這個我怎么沒想到呢,可以單獨設(shè)置。我之前看項目我都沒注意到這個問題。

指北君:沒關(guān)系,現(xiàn)在不是已經(jīng)知道了嗎?我們繼續(xù)吧。

圖片

實習(xí)生:好的,大佬,你這里寫的日志關(guān)閉hook是干啥的?

指北君:其實這個就像我們spring boot 怎么做到優(yōu)雅停機(jī)一樣。我們要做到先把日志打印入口先關(guān)閉了,然后把打印的日志打印完,我再結(jié)束我這個日志打印的線程。

實習(xí)生:你這么說我就明白了。

指北君:上面講述的都是通過配置spring boot 默認(rèn)實現(xiàn)的方式來配置日志,我們還可以自己個性化配置日志輸出的情況。在這我們以前spring 項目的時候,是很常見的。我們現(xiàn)在也一直在延續(xù)使用這種方式。

圖片

實習(xí)生:那你這個最后那個環(huán)節(jié) 也是和這個自定義配置有關(guān)了吧

圖片

指北君:你小子眼睛還挺尖的啊,我這里主要是說明兩個東西,一個是 spring boot profiles在日志文件中的應(yīng)用。

<springProfile name="dev | staging">
...
</springProfile>

另外一個是怎么引入 sping的環(huán)境變量。

<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>

實習(xí)生:hoho,可以啊,這操作不錯。

總結(jié)

指北君今天就是帶大家過一遍 spring boot logging 是什么一回事,怎么配置使用的。

本文的所有示例源代碼和完整的思維導(dǎo)圖都已上傳到了 Github:

https://github.com/javatechnorth/java-north-sample

責(zé)任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2022-07-11 09:00:37

依賴配置文件Mybati

2024-01-02 07:04:23

2023-11-06 07:25:51

Spring配置應(yīng)用程序

2022-06-27 08:16:34

JSON格式序列化

2022-04-26 08:41:54

JDK動態(tài)代理方法

2023-05-05 08:29:15

Spring后臺服務(wù)器

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-01-19 08:25:38

死鎖Java通信

2024-03-04 07:41:18

SpringAOPOOP?

2022-06-16 07:50:35

數(shù)據(jù)結(jié)構(gòu)鏈表

2022-12-06 07:53:33

MySQL索引B+樹

2023-07-30 22:29:51

BDDMockitoAssert測試

2023-10-06 14:49:21

SentinelHystrixtimeout

2024-02-02 11:03:11

React數(shù)據(jù)Ref

2024-03-06 08:28:16

設(shè)計模式Java

2022-07-13 08:16:49

RocketMQRPC日志
點贊
收藏

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