springboot使用commons logging進(jìn)行所有內(nèi)部日志記錄,但保留底層日志實(shí)現(xiàn)。默認(rèn)提供了java util logging, log4j2 和logback日志配置。在每種情況下,都預(yù)先配置為使用控制臺(tái)輸出,并且還提供了可選的文件輸出。(來自官網(wǎng))
日志格式
springboot默認(rèn)的日志輸出如下所示:
1
2
3
4
5
|
2014 - 03 - 05 10 : 57 : 51.112 info 45469 --- [ main] org.apache.catalina.core.standardengine : starting servlet engine: apache tomcat/ 7.0 . 52 2014 - 03 - 05 10 : 57 : 51.253 info 45469 --- [ost-startstop- 1 ] o.a.c.c.c.[tomcat].[localhost].[/] : initializing spring embedded webapplicationcontext 2014 - 03 - 05 10 : 57 : 51.253 info 45469 --- [ost-startstop- 1 ] o.s.web.context.contextloader : root webapplicationcontext: initialization completed in 1358 ms 2014 - 03 - 05 10 : 57 : 51.698 info 45469 --- [ost-startstop- 1 ] o.s.b.c.e.servletregistrationbean : mapping servlet: 'dispatcherservlet' to [/] 2014 - 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, trace
- 進(jìn)程id
- --- 分隔符來區(qū)分實(shí)際日志的開始
- 線程名:括在方括號(hào)中(可能會(huì)被截?cái)啵?/li>
- 日志記錄器名:這通常是源類名(通??s寫)
- 日志信息
logback中沒有fatal(致命)級(jí)別,它被映射到error級(jí)別
( 日志格式 來自 官網(wǎng) )
控制臺(tái)輸出
springboot控制臺(tái)輸出默認(rèn)支持三種日志級(jí)別:error,warn和info
如果還想輸出別的級(jí)別日志,例如debug或trace(只能二選一),如下操作:
啟動(dòng)應(yīng)用程序時(shí),增加--debug或--trace標(biāo)志
1
|
$ java -jar myapp.jar -- debug |
說明:使用debug調(diào)試模式啟動(dòng)應(yīng)用程序不會(huì)將應(yīng)用程序配置為使用debug級(jí)別記錄日志。復(fù)制代碼
在application.yml中(或application.properties中)增加debug: true或trace: true(或debug=true/trace=true)
application.yml文件:
1
|
debug: true |
application.properties文件:
1
|
debug= true |
多彩輸出:
如果終端支持ansi(表示顏色),可以設(shè)置彩色輸出。
application.yml中設(shè)置:
1
2
3
4
5
|
# 檢查終端是否支持ansi,是的話就采用彩色輸出 spring: output: ansi: enabled: detect |
application.properties中設(shè)置:
1
2
|
# 檢查終端是否支持ansi,是的話就采用彩色輸出 spring.output.ansi.enabled=detect |
文件輸出
springboot默認(rèn)配置日志只會(huì)輸出到控制臺(tái),并不會(huì)記錄到文件中,但通常生產(chǎn)環(huán)境需要把日志記錄到文件中。
配置屬性如下:
- logging.file: 設(shè)置日志輸出文件,絕對(duì)路徑或相對(duì)路徑都可以。
- logging.path: 設(shè)置日志輸出目錄,會(huì)在該目錄下創(chuàng)建spring.log文件,并寫入日志內(nèi)容。
日志文件在達(dá)到10 mb時(shí)滾動(dòng)輸出,并且與控制臺(tái)輸出一樣,默認(rèn)情況下會(huì)記錄error,warn和info級(jí)別的日志??梢允褂胠ogging.file.max-size屬性更改大小限制。除非已設(shè)置logging.file.max-history屬性,否則以前輪換的日志文件將被無限期歸檔。(來自官網(wǎng))
注意點(diǎn):
日志記錄系統(tǒng)在應(yīng)用程序生命周期的早期初始化。因此,在通過@propertysource注解加載的屬性文件中找不到日志記錄屬性。
日志記錄屬性獨(dú)立于實(shí)際的日志記錄基礎(chǔ)結(jié)構(gòu)。因此,springboot不管理特定的配置密鑰(例如logback的logback.configurationfile)。 (來自官網(wǎng))
application.yml中設(shè)置:
1
2
3
4
5
6
7
8
9
10
11
|
logging: # 設(shè)置相對(duì)路徑的日志輸出文件 file: log/my.log # 設(shè)置日志輸出路徑,默認(rèn)會(huì)生成log/spring.log日志文件 path: log logging: # 設(shè)置絕對(duì)路徑的日志輸出文件 file: d:\ideaprojects\springbootdemo\log1\mylog1.log # 設(shè)置日志輸出路徑,默認(rèn)會(huì)生成log/spring.log日志文件 path: log |
application.properties中設(shè)置:
1
2
|
logging.file=log/my.log logging.path=log |
級(jí)別控制
配置屬性格式:logging.level.*=level
- logging.level: 日志級(jí)別控制前綴,*為包名或logger名
- level: 選項(xiàng)trace, debug, info, warn, error, fatal, off
application.yml中設(shè)置:
1
2
3
4
5
6
|
logging: level: # com.example.demo包下所有 class 以debug級(jí)別輸出 com.example.demo: debug # root日志以info級(jí)別輸出 root: info |
說明:
配置日志級(jí)別值大小寫均可,例如:設(shè)置成debug/info
application.properties中設(shè)置:
1
2
|
logging.level.com.example.demo=debug logging.level.root=info |
說明:配置日志級(jí)別值大小寫均可,例如:設(shè)置成debug/info
刨根問底,死磕自己(選看)
1. 日志級(jí)別設(shè)置選項(xiàng)
源碼中系統(tǒng)日志級(jí)別是個(gè)枚舉類,列出了所有日志級(jí)別,如下截圖:
根據(jù)在application.yml中設(shè)置的level值,匹配系統(tǒng)日志枚舉類,最終設(shè)置系統(tǒng)相應(yīng)包下的日志級(jí)別。
springboot官網(wǎng): https://docs.spring.io/spring-boot/docs/2.1.2.release/reference/htmlsingle/
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://juejin.im/post/5c525fac51882525800544b4