一:本課程目標(biāo):
學(xué)習(xí)springboot日志的框架,學(xué)完后會(huì)設(shè)置日志級(jí)別半开、設(shè)置日志的存儲(chǔ)路徑隔披、設(shè)置日志的格式等等。
二:剖析springboot的日志框架
從上圖可以分析出springboot的底層框架是spring-boot-starter-logging
spring-boot-starter-logging由依賴了3個(gè)log框架,分別為slf4j寂拆、logback奢米、log4j.
分析1:slf4j纠永、logback鬓长、log4j的區(qū)別?
1.logback尝江、log4j:是日志框架涉波,就是實(shí)現(xiàn)怎么記錄日志的。
2.slf4j:提供了Java中所有日志框架的簡(jiǎn)單抽象(日志的門面設(shè)計(jì)模式)炭序,說(shuō)白一點(diǎn)就是一個(gè)日志API(沒(méi)有實(shí)現(xiàn)類),它不能單獨(dú)使用啤覆;故,必須結(jié)合logback或log4j日志框架惭聂。
分析2:Spring Boot 的日志搭配
Spring Boot 2.x 默認(rèn)采用了slf4j+logback的日志搭配窗声。
在開(kāi)發(fā)的過(guò)程中,我們都是采用slf4j的api去記錄日志彼妻,底層的實(shí)現(xiàn)就是根據(jù)配置logback或log4j日志框架
三:寫個(gè)測(cè)試類體驗(yàn)下日志
@RestController
public class LogController {
private static final Logger logger = LoggerFactory.getLogger(LogController.class);
@RequestMapping("/log")
public void log() {
logger.trace("-----------trace-------------");
logger.debug("-----------debug-------------");
logger.info("-----------info-------------");
logger.warn("-----------warn-------------");
logger.error("-----------error-------------");
}
}
瀏覽器中訪問(wèn)路徑:http://127.0.0.1:9090/log
為什么控制臺(tái)的日志只輸出了info嫌佑、warn、error 侨歉?
因?yàn)镾pringBoot默認(rèn)是設(shè)置info級(jí)別屋摇。
要改變springboot的日志級(jí)別,只要在配置文件中加入以下內(nèi)容即可
logging.level.com.agan=trace
重新在瀏覽器中訪問(wèn)路徑:http://127.0.0.1:9090/log
四:配置日志生成的存儲(chǔ)路徑及日志名稱
在實(shí)際開(kāi)發(fā)過(guò)程中幽邓,我們不可能一直看著控制臺(tái)炮温,而且日質(zhì)量會(huì)很大,瞬間就丟失牵舵。
故柒啤,我們要把日志配置在指定的目錄下:
# 配置日志的文件夾路徑倦挂,按照默認(rèn)的名稱spring.log
# 以下配置的效果為:項(xiàng)目根目錄/output/logs/spring.log
logging.path=output/logs
# 如果不想要把日志存放在logging.path默認(rèn)的根目錄下,那就采用自定義日志的目錄和文件名
logging.file=/Volumes/data/logs/springboot.log
五:配置日志的內(nèi)容格式
先來(lái)看下担巩,默認(rèn)的日志格式是什么樣的方援?
2019-08-25 00:24:31.161 TRACE 10236 --- [nio-9090-exec-1] c.a.boot.log.controller.LogController : -----------trace-------------
2019-08-25 00:24:31.161 DEBUG 10236 --- [nio-9090-exec-1] c.a.boot.log.controller.LogController : -----------debug-------------
2019-08-25 00:24:31.161 INFO 10236 --- [nio-9090-exec-1] c.a.boot.log.controller.LogController : -----------info-------------
2019-08-25 00:24:31.161 WARN 10236 --- [nio-9090-exec-1] c.a.boot.log.controller.LogController : -----------warn-------------
2019-08-25 00:24:31.161 ERROR 10236 --- [nio-9090-exec-1] c.a.boot.log.controller.LogController : -----------error-------------
更改日志的格式,更改語(yǔ)法如下:
%d-時(shí)間格式涛癌、%thread-線程犯戏、%-5level-日志級(jí)別,從左5字符寬度拳话、%logger{50}-日志50個(gè)字符先匪、%msg-信息、%n-換行
# %d-時(shí)間格式弃衍、%thread-線程呀非、%-5level-從左5字符寬度、%logger{50}-日志50個(gè)字符镜盯、%msg-信息岸裙、%n-換行
# 設(shè)置在控制臺(tái)輸出的日志格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} -%msg%n
# 設(shè)置輸出到文件的日志格式
logging.pattern.file=%d{yyyy/MM/dd} === [%thread] == %-5level == %logger{50} == %msg%n
更改后的輸出結(jié)果:
2019-08-25 [http-nio-9090-exec-1] TRACE com.agan.boot.log.controller.LogController ------------trace-------------
2019-08-25 [http-nio-9090-exec-1] DEBUG com.agan.boot.log.controller.LogController ------------debug-------------
2019-08-25 [http-nio-9090-exec-1] INFO com.agan.boot.log.controller.LogController ------------info-------------
2019-08-25 [http-nio-9090-exec-1] WARN com.agan.boot.log.controller.LogController ------------warn-------------
2019-08-25 [http-nio-9090-exec-1] ERROR com.agan.boot.log.controller.LogController ------------error-------------
六:課后練習(xí)
自己搭建一個(gè)springboot項(xiàng)目,實(shí)現(xiàn)以下2個(gè)功能:
1.用try...catch捕獲以下代碼異常
int i=0/9;
把異常日志存儲(chǔ)在d:/log/springboot.log
2.參考以下的日志內(nèi)容,配置出日志格式
2019-08-25 TRACE c.a.b.l.c.LogController ------------trace-------------
2019-08-25 DEBUG c.a.b.l.c.LogController ------------debug-------------
2019-08-25 INFO c.a.b.l.c.LogController ------------info-------------
2019-08-25 WARN c.a.b.l.c.LogController ------------warn-------------
2019-08-25 ERROR c.a.b.l.c.LogController ------------error-------------
-----------------------------配套學(xué)習(xí)資料-----------------------------
- 課后練習(xí)作業(yè)請(qǐng)?zhí)峤坏絈Q群(1號(hào)QQ群3000人已滿形耗,請(qǐng)加2號(hào)群:985378659[群名:SpringBoot架構(gòu)師])
- 本課程配套免費(fèi)視頻教程
https://study.163.com/course/introduction/1004576013.htm?share=1&shareId=1016481220 - 本課程配套源碼地址:https://github.com/agan-java/agan-boot