spring boot—默認日誌框架配置

spring boot2.2.4官方文檔


默認日誌框架–配置全解

#日誌記錄
logging:
  #日誌級別
  level:
    #可以調整不同目錄的日誌級別(注意:必須指定包,否則報錯)
    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
    #文件大小(默認10MB)
    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'

日誌輸出格式:

   1) %d 日誌輸出時間
   2) %-5level 日誌級別,並且使5個字符靠左對齊(從左顯示5個字符寬度)
   3) %thread 線程名
   4) %logger{50} 日誌輸出者名字(全類名),最長50個字符,否則按照句點分隔
   5) %msg 日誌消息
   6) %n 換行符
cd4356
cd4356


配置日誌格式時遇到的異常:
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:
    #可以調整不同目錄的日誌級別(注意:必須指定包,否則報錯)
    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

cd4356

控制檯輸出日誌高亮顯示
   1)控制檯輸出默認是全黑顯示,爲了提高可讀性,我們可以配置日誌高亮顯示

   2)配置spring.output.ansi.enabled屬性開啓控制檯彩色輸出功能

   3)配置控制檯日誌格式時,使用%clr()彩色轉換器對輸出文本着色,也可使用%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

cd4356
)注意:輸出到文件的日誌格是無法高亮的,所以不要使用%clr()彩色轉換器對輸出到文件的日誌文本着色,不然%clr()會被轉義,看起來有點像亂碼的感覺


日誌輸出到文件

   1) 默認情況下,Spring Boot只會在控制檯中輸出日誌信息,不寫入日誌文件。

   2)如果除了在控制檯輸出外,還想寫入日誌文件中,則可以設置一個logging.file.namelogging.file.path屬性
cd4356
官網有一段描述:
   1)如果logging.file.namelogging.file.path屬性都不指定,那麼日誌僅在控制檯記錄。

   2)指定logging.file.namelogging.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
    #文件大小(默認10MB)
    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都會將前一天的日誌文件進行打包壓縮




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章