Springboot中的默認日志框架配置詳解
默認日志框架–配置全解
#日志記錄 logging: #日志級別 level: #可以調(diào)整不同目錄的日志級別(注意:必須指定包,否則報錯) root: info com.cd.example.one: trace com.cd.example.two: debug com.cd.example.three: info #日志文件 file: #日志文件完整路徑(包含日志文件名) name: D:\idea\logs\example-loggin.log #日志文件目錄路徑(spring boot默認使用spring.log作為日志文件) #path: D:\idea\log #文件大?。J10MB) max-size: 10MB #文件保存周期(默認7天,七天之后就會刪除) max-history: 7 #日志輸出格式 pattern: #在控制臺輸出的日志格式 console: -%d{yyyy-MM-dd HH:mm:ss} - %clr(%-5level) - [%thread] - %logger{50} -- %clr(%msg) %n #在文件輸出的日志格式 file: '%d{yyyy-MM-dd hh:mm:ss} %-5level [%thread] %logger{50} -- %msg %n' #spring boot主配置 spring: #開啟控制臺日志彩色輸出功能 output: ansi: enabled: always
日志格式
#日志記錄 logging: #日志輸出格式 pattern: #在控制臺輸出的日志格式 console: -%d{yyyy-MM-dd HH:mm:ss} - %-5level - [%thread] - %logger{50} -- %msg %n #在文件輸出的日志格式 file: '%d{yyyy-MM-dd hh:mm} %-5level [%thread] %logger{50} -- %msg %n'
日志輸出格式
- %d 日志輸出時間
- %-5level 日志級別,并且使5個字符靠左對齊(從左顯示5個字符寬度)
- %thread 線程名
- %logger{50} 日志輸出者名字(全類名),最長50個字符,否則按照句點分隔
- %msg 日志消息
- %n 換行符
配置日志格式時遇到的異常:
Caused by: while scanning for the next token found character ‘%’ that cannot start any token. (Do not use % for indentation) in ‘reader’, line 26, column 14: console: %d{yyyy-MM-dd HH:mm:ss} %-5level …
異常原因:
yml配置文件中(縮進不能使用%開頭),而配置logging.pattern.console屬性值時以%開頭了,所以報錯
解決方案:
使用''包裹起來 或者 在首個%前隨便加些字符(只要不讓%開頭即可)
將 logging: #日志輸出格式 pattern: #在控制臺輸出的日志格式 console: %d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n 改成 logging: #日志輸出格式 pattern: #在控制臺輸出的日志格式 console: '%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n' 或者改成 logging: #日志輸出格式 pattern: #在控制臺輸出的日志格式 console: -%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n
日志級別
1) level有七個級別,由低到高: trace < debug < info < warn < error < fatal < off
2) spring boot默認使用info日志級別,如果我們不配置-則使用默認該級別
3)只有指定級別及更高級別的日志會生效,低于指定級別的日志不會生效
#日志記錄 logging: #日志級別 level: #可以調(diào)整不同目錄的日志級別(注意:必須指定包,否則報錯) root: info com.cd.example.one: trace com.cd.example.two: debug com.cd.example.three: info
日志輸出到控制臺
spring boot日志默認會輸出到控制臺,所以并不需要我們做過多配置。但不過不喜歡控制臺默認日志格式,則可以使用 logging.pattern.console
屬性配置
#日志記錄 logging: #日志輸出格式 pattern: #在控制臺輸出的日志格式 console: -%d{yyyy-MM-dd HH:mm:ss} - %-5level - [%thread] - %logger{50} -- %msg %n
控制臺輸出日志高亮顯示
1)控制臺輸出默認是全黑顯示,為了提高可讀性,我們可以配置日志高亮顯示
2)配置 spring.output.ansi.enabled 屬性開啟控制臺彩色輸出功能
3)配置控制臺日志格式時,使用 %clr() 彩色轉(zhuǎn)換器對輸出文本著色,也可使用 %clr(){顏色} 來指定使用的顏色(如 %clr(){blue} )
#spring boot主配置 spring: #開啟控制臺日志彩色輸出功能 output: ansi: enabled: always #日志記錄 logging: #日志輸出格式 pattern: #在控制臺輸出的日志格式 console: -%d{yyyy-MM-dd HH:mm:ss} - %clr(%-5level) - [%thread] - %logger{50} -- %clr(%msg) %n
注意:輸出到文件的日志格是無法高亮的,所以不要使用 %clr() 彩色轉(zhuǎn)換器對輸出到文件的日志文本著色,不然 %clr() 會被轉(zhuǎn)義,看起來有點像亂碼的感覺
日志輸出到文件
1) 默認情況下,Spring Boot只會在控制臺中輸出日志信息,不寫入日志文件。
2)如果除了在控制臺輸出外,還想寫入日志文件中,則可以設(shè)置一個 logging.file.name 或 logging.file.path 屬性
官網(wǎng)有一段描述:
1)如果 logging.file.name 和 logging.file.path 屬性都不指定,那么日志僅在控制臺記錄。
2)指定 logging.file.name 或 logging.file.path 屬性,日志就會寫入日志文件。指定一個屬性即可,如果兩個都指定,那么只有 logging.file.name 屬性生效
3) logging.file.name 屬性用于指定日志文件完整路徑(包含文件名), logging.file.path 屬性用于指定日志文件目錄路徑(不包含文件名,使用spring boot默認日志文件名 spring.log )。
兩個屬性都是用于將日志記錄到日志文件中,那我們該使用哪個屬性呢?
1)如果不想使用spring boot默認的日志文件名 spring.log ,就使用 logging.file.name 屬性
2)如果要使用spring boot默認的日志文件名 spring.log ,就使用 spring.file.path
#日志記錄 logging: #日志文件 file: #日志文件完整路徑(包含日志文件名) name: D:\idea\logs\example-logging.log #日志文件目錄路徑(spring boot默認使用spring.log作為日志文件) path: D:\idea\logs #文件大?。J10MB) max-size: 10MB #文件保存周期(默認7天,七天之后就會刪除) max-history: 7 #日志輸出格式 pattern: #在文件輸出的日志格式 file: '%d{yyyy-MM-dd hh:mm:ss} %-5level [%thread] %logger{50} -- %msg %n'
3)每天凌晨后,spring boot都會將前一天的日志文件進行打包壓縮
到此這篇關(guān)于Springboot中的默認日志框架配置詳解的文章就介紹到這了,更多相關(guān)Springboot默認日志配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java8新特性之再見Permgen_動力節(jié)點Java學院整理
這篇文章主要介紹了Java8新特性之再見Permgen的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-06-06Java網(wǎng)絡(luò)IO模型詳解(BIO、NIO、AIO)
Java支持BIO、NIO和AIO三種網(wǎng)絡(luò)IO模型,BIO是同步阻塞模型,適用于連接數(shù)較少的場景,NIO是同步非阻塞模型,適用于處理多個連接,支持自JDK1.4起,AIO是異步非阻塞模型,適用于異步操作多的場景,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-10-10Java如何實現(xiàn)支付寶電腦支付基于servlet版本
這篇文章主要介紹了Java如何實現(xiàn)支付寶電腦支付基于servlet版本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11