SpringBoot基礎系列-使用日誌
原創作品,可以轉載,但是請標註出處地址:https://www.cnblogs.com/V1haoge/p/9996897.html
SpringBoot基礎系列-使用日誌
概述
SpringBoot使用Common Logging進行日誌操作,Common Logging是一個日誌功能框架,沒有具體的實現,具體的日誌操作需要具體的日誌框架來實現。
常用的日誌框架包括:JUL(Java Util Logging)、Log4J2、Logback。
預設情況下,使用的是Logback作為底層實現。
日誌格式
SpringBoot的預設的日誌格式如下:
2018-11-21 10:23:34.966 INFO 12588 --- [ restartedMain] c.e.s.SpringbootdemoApplication : Starting SpringbootdemoApplication on PC-20170621WOWM with PID 12588 (F:\Code\etongdai\etongdai-reactor\springbootdemo\target\classes started by Administrator in F:\Code\etongdai\etongdai-reactor\springbootdemo) 2018-11-21 10:23:34.968 INFO 12588 --- [ restartedMain] c.e.s.SpringbootdemoApplication : No active profile set, falling back to default profiles: default 2018-11-21 10:23:34.968 DEBUG 12588 --- [ restartedMain] o.s.boot.SpringApplication : Loading source class com.example.springbootdemo.SpringbootdemoApplication
格式為:(date) (time) (log level) (process Id) --- ([thread name]) (logger name) : (log message)
日誌級別
- ERROR(FATAL也屬此類)
- WARN
- INFO
- DEBUG
TRACE
日誌輸出
控制檯輸出
預設情況下,SpringBoot的日誌就是輸出控制檯,而且預設是INFO級別,也就是ERROR、WARN、INFO這三個級別的日誌會被輸出。
設定日誌級別
命令列引數
java -jar xxx.jar --debug
application.properties
debug=true
彩色輸出(無甚用處)
檔案輸出
設定日誌輸出檔案
application.properties
logging.file=xxx.log
logging.path=/log/
前者用於指定輸出日誌的檔案,後者用於指定日誌輸出檔案的位置,其名稱為預設的spring.log。
設定日誌檔案大小
預設情況下當日志文件達到10M大小的時候就會輪轉(重新開始),舊的日誌內容預設會自動存檔,而且自動存檔預設是無限期的,可以使用如下配置:
#設定日誌檔案的最大尺寸,大於該尺寸,日誌開始輪轉 logging.file.max-size=20MB #設定存檔日誌檔案的最大容量 logging.file.max-history=100
日誌級別
SprngBoot中集成了多個模組,我們可以對其分別進行日誌級別設定:
#設定root級日誌級別
logging.level.root=WARN
#設定spring web框架的日誌級別
logging.level.org.springframework.web=DEBUG
#設定spring中整合的hibernate的日誌級別
logging.level.org.hibernate=ERROR
日誌組
為避免針對各個系統進行日誌設定,提供了日誌組,將相同日誌級別的系統模組設定成一組,統一設定一致的日誌級別,SpringBoot提供了預設的日誌組,我們也能自定義日誌組:
自定義日誌組
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
通過如下配置統一設定日誌級別:
logging.level.tomcat=TRACE
SpringBoot內建日誌組
|序號|Name|Loggers|
|1|web|org.springframework.core.codec, org.springframework.http, org.springframework.web|
|2|sql|org.springframework.jdbc.core, org.hibernate.SQL|
通過Name值即可統一設定其中包含的Loggers的日誌級別
logging.level.web=DEBUG
定製Log配置
SpringBoot底層支援多種日誌實現,可以通過新增某種日誌系統的jar包的方式來使其自動啟用可用(SpringBoot的自動配置功能的作用),然後可以通過在classpath根路徑下或者是logging.config配置屬性(在application.properties中配置)指定的目錄下自定義日誌配置檔案來進行深度定製。
針對不同的日誌底層實現,需要自定義不同名稱的日誌配置檔案
|序號|Logging System|fileName|
|1|Logback|logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy|
|2|Log4j2|log4j2-spring.xml or log4j2.xml|
|3|JDK (Java Util Logging)|logging.properties|
推薦使用*-spring.xml格式命名的配置檔案作為自定義日誌配置檔名
擴充套件Logback
Spring Boot包含了許多可以幫助進行高階配置的Logback擴充套件。可以在logback-spring.xml配置檔案中使用這些擴充套件。
基於profile的日誌配置
可以配置在某個profile處於啟用時使用的日誌配置
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
Environment屬性
通過
<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
<remoteHost>${fluentHost}</remoteHost>
...
</appender>