springboot使用commons logging進行所有內部日志記錄,但保留底層日志實現。默認提供了java util logging, log4j2 和logback日志配置。在每種情況下,都預先配置為使用控制臺輸出,并且還提供了可選的文件輸出。(來自官網)
日志格式
springboot默認的日志輸出如下所示:
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: [/*] |
輸出以下項目:
- 日期和時間:毫秒精度并且容易排序
- 日志級別:error, warn, info, debug, trace
- 進程id
- --- 分隔符來區分實際日志的開始
- 線程名:括在方括號中(可能會被截斷)
- 日志記錄器名:這通常是源類名(通常縮寫)
- 日志信息
logback中沒有fatal(致命)級別,它被映射到error級別
( 日志格式 來自 官網 )
控制臺輸出
springboot控制臺輸出默認支持三種日志級別:error,warn和info
如果還想輸出別的級別日志,例如debug或trace(只能二選一),如下操作:
啟動應用程序時,增加--debug或--trace標志
1
|
$ java -jar myapp.jar -- debug |
說明:使用debug調試模式啟動應用程序不會將應用程序配置為使用debug級別記錄日志。復制代碼
在application.yml中(或application.properties中)增加debug: true或trace: true(或debug=true/trace=true)
application.yml文件:
1
|
debug: true |
application.properties文件:
1
|
debug= true |
多彩輸出:
如果終端支持ansi(表示顏色),可以設置彩色輸出。
application.yml中設置:
1
2
3
4
5
|
# 檢查終端是否支持ansi,是的話就采用彩色輸出 spring: output: ansi: enabled: detect |
application.properties中設置:
1
2
|
# 檢查終端是否支持ansi,是的話就采用彩色輸出 spring.output.ansi.enabled=detect |
文件輸出
springboot默認配置日志只會輸出到控制臺,并不會記錄到文件中,但通常生產環境需要把日志記錄到文件中。
配置屬性如下:
- logging.file: 設置日志輸出文件,絕對路徑或相對路徑都可以。
- logging.path: 設置日志輸出目錄,會在該目錄下創建spring.log文件,并寫入日志內容。
日志文件在達到10 mb時滾動輸出,并且與控制臺輸出一樣,默認情況下會記錄error,warn和info級別的日志。可以使用logging.file.max-size屬性更改大小限制。除非已設置logging.file.max-history屬性,否則以前輪換的日志文件將被無限期歸檔。(來自官網)
注意點:
日志記錄系統在應用程序生命周期的早期初始化。因此,在通過@propertysource注解加載的屬性文件中找不到日志記錄屬性。
日志記錄屬性獨立于實際的日志記錄基礎結構。因此,springboot不管理特定的配置密鑰(例如logback的logback.configurationfile)。 (來自官網)
application.yml中設置:
1
2
3
4
5
6
7
8
9
10
11
|
logging: # 設置相對路徑的日志輸出文件 file: log/my.log # 設置日志輸出路徑,默認會生成log/spring.log日志文件 path: log logging: # 設置絕對路徑的日志輸出文件 file: d:\ideaprojects\springbootdemo\log1\mylog1.log # 設置日志輸出路徑,默認會生成log/spring.log日志文件 path: log |
application.properties中設置:
1
2
|
logging.file=log/my.log logging.path=log |
級別控制
配置屬性格式:logging.level.*=level
- logging.level: 日志級別控制前綴,*為包名或logger名
- level: 選項trace, debug, info, warn, error, fatal, off
application.yml中設置:
1
2
3
4
5
6
|
logging: level: # com.example.demo包下所有 class 以debug級別輸出 com.example.demo: debug # root日志以info級別輸出 root: info |
說明:
配置日志級別值大小寫均可,例如:設置成debug/info
application.properties中設置:
1
2
|
logging.level.com.example.demo=debug logging.level.root=info |
說明:配置日志級別值大小寫均可,例如:設置成debug/info
刨根問底,死磕自己(選看)
1. 日志級別設置選項
源碼中系統日志級別是個枚舉類,列出了所有日志級別,如下截圖:
根據在application.yml中設置的level值,匹配系統日志枚舉類,最終設置系統相應包下的日志級別。
springboot官網: https://docs.spring.io/spring-boot/docs/2.1.2.release/reference/htmlsingle/
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://juejin.im/post/5c525fac51882525800544b4