SpringBoot基礎系列-使用日誌

原創做品,能夠轉載,可是請標註出處地址: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>
相關文章
相關標籤/搜索