原創做品,能夠轉載,可是請標註出處地址:https://www.cnblogs.com/V1haoge/p/9996897.htmlhtml
SpringBoot基礎系列-使用日誌
概述
SpringBoot使用Common Logging進行日誌操做,Common Logging是一個日誌功能框架,沒有具體的實現,具體的日誌操做須要具體的日誌框架來實現。 經常使用的日誌框架包括:JUL(Java Util Logging)、Log4J二、Logback。 默認狀況下,使用的是Logback做爲底層實現。java
日誌格式
SpringBoot的默認的日誌格式以下:react
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)web
日誌級別
- ERROR(FATAL也屬此類)
- WARN
- INFO
- DEBUG
- TRACE
日誌輸出
控制檯輸出
默認狀況下,SpringBoot的日誌就是輸出控制檯,並且默認是INFO級別,也就是ERROR、WARN、INFO這三個級別的日誌會被輸出。spring
設置日誌級別
命令行參數
java -jar xxx.jar --debug
application.properties
debug=true
彩色輸出(無甚用處)
文件輸出
設置日誌輸出文件
application.propertiessql
logging.file=xxx.log logging.path=/log/
前者用於指定輸出日誌的文件,後者用於指定日誌輸出文件的位置,其名稱爲默認的spring.log。apache
設置日誌文件大小
默認狀況下當日志文件達到10M大小的時候就會輪轉(從新開始),舊的日誌內容默認會自動存檔,並且自動存檔默認是無限期的,可使用以下配置:tomcat
#設置日誌文件的最大尺寸,大於該尺寸,日誌開始輪轉 logging.file.max-size=20MB #設置存檔日誌文件的最大容量 logging.file.max-history=100
日誌級別
SprngBoot中集成了多個模塊,咱們能夠對其分別進行日誌級別設置:springboot
#設置root級日誌級別 logging.level.root=WARN #設置spring web框架的日誌級別 logging.level.org.springframework.web=DEBUG #設置spring中集成的hibernate的日誌級別 logging.level.org.hibernate=ERROR
日誌組
爲避免針對各個系統進行日誌設置,提供了日誌組,將相同日誌級別的系統模塊設置成一組,統一設置一致的日誌級別,SpringBoot提供了默認的日誌組,咱們也能自定義日誌組:app
自定義日誌組
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>標籤能夠在日誌配置文件中使用來自application.properties中配置的屬性,由於application.properties中配置的屬性會被加載到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>