偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

開發(fā) 前端
spring boot 內(nèi)部使用的是 apache 開源的 commons logging 來(lái)記錄日志的。但是呢,它又提供了基礎(chǔ)的日志實(shí)現(xiàn)接口,方便向 java util logging、 log4j、logback之類的接入。spring boot 現(xiàn)在已經(jīng)為 Java util logging 、log4j2、logback 提供了默認(rèn)的實(shí)現(xiàn)。我們?nèi)绻枰褂玫脑?,只要?jiǎn)單配置就可以了。

大家好,我是指北君。

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

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

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

圖片

今天就從這幾個(gè)角度來(lái)講。

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

圖片

指北君:spring boot 內(nèi)部使用的是 apache 開源的 commons logging 來(lái)記錄日志的。但是呢,它又提供了基礎(chǔ)的日志實(shí)現(xiàn)接口,方便向 java util logging、 log4j、logback之類的接入。spring boot 現(xiàn)在已經(jīng)為 Java util logging 、log4j2、logback 提供了默認(rèn)的實(shí)現(xiàn)。我們?nèi)绻枰褂玫脑挘灰?jiǎn)單配置就可以了。

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

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

圖片

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

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

圖片

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

圖片

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

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

圖片

默認(rèn)情況下,spring boot 項(xiàng)目的日志輸出方式是控制臺(tái)輸出。控制臺(tái)輸出一般情況下只有3中輸出方式,就是上面寫的 ERROR、WARN、INFO。因?yàn)榇蜷_debug的話,所有其他的日志都會(huì)打出來(lái),對(duì)我們開發(fā)來(lái)說不太方便。

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

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

java -jar myapp.jar --debug

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

application.properties 配置 debug=true

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

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

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

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

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

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

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

圖片

指北君:這個(gè)你都沒懂嗎?我們?nèi)罩緦懭氲轿募镏?,如果我們不處理的話,文件可以把你電腦寫爆了。另一方面,方便我們處理日志文件啊。

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

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

圖片

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

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

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

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

圖片

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

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

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

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

圖片

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

圖片

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

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

另外一個(gè)是怎么引入 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>

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

總結(jié)

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

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

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

責(zé)任編輯:武曉燕 來(lái)源: 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格式序列化

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

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

2023-07-26 13:11:21

ChatGPT平臺(tái)工具

2023-01-10 08:43:15

定義DDD架構(gòu)

2023-05-05 08:29:15

Spring后臺(tái)服務(wù)器

2022-04-26 08:41:54

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

2024-03-04 07:41:18

SpringAOPOOP?

2023-10-10 11:04:11

Rust難點(diǎn)內(nèi)存

2024-05-06 00:00:00

InnoDBView隔離

2024-07-31 08:39:45

Git命令暫存區(qū)

2023-01-30 09:01:54

圖表指南圖形化

2022-07-08 09:27:48

CSSIFC模型

2023-12-12 08:02:10

2024-08-06 09:47:57

2023-08-01 12:51:18

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

2024-01-02 12:05:26

Java并發(fā)編程
點(diǎn)贊
收藏

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