SpringBoot
是爲了簡化Spring
應用的建立、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓咱們能夠更好的關注業務自己而不是外部的XML配置,咱們只需遵循規範,引入相關的依賴就能夠輕易的搭建出一個 WEB 工程
Spring Boot
內部採用的是 Commons Logging
進行日誌記錄,但在底層爲 Java Util Logging
、Log4J2
、Logback
等日誌框架提供了默認配置 。html
Java 雖然有不少可用的日誌框架,但請不要擔憂,通常來講,使用SpringBoot
默認的Logback
就能夠了。
<!-- more -->java
SpringBoot
的默認輸出的日誌格式以下:
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms 2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
輸出以下元素:
Logback
是沒有 FATAL
級別的日誌,它將被映射到 ERROR
web
---
來標識日誌開始部分SpringBoot
默認爲咱們輸出的日誌級別爲 INFO
、WARN
、ERROR
,如須要輸出更多日誌的時候,能夠經過如下方式開啓spring
java -jar app.jar --debug=true
, 這種命令會被 SpringBoot
解析,且優先級最高application.properties
配置 debug=true
便可。該配置只對 嵌入式容器、Spring、Hibernate生效,咱們本身的項目想要輸出 DEBUG
須要額外配置(配置規則:logging.level.<logger-name>=<level>
) 日誌輸出級別配置
logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR #好比 mybatis sql日誌 logging.level.org.mybatis = INFO logging.level.mapper所在的包 = DEBUG
日誌輸出格式配置
若是終端支持 ANSI
,默認狀況下會給日誌上個色,提升可讀性,能夠在配置文件中設置 spring.output.ansi.enabled
來改變默認值sql
ANSI
顏色的輸出。ANSI
着色功能是否可用。ANSI
顏色的輸出。Level | Color |
---|---|
WARN |
Yellow |
FATAL 、ERROR |
Red |
INFO 、DEBUG 、TRACE |
Green |
若是想修改日誌默認色值,能夠經過使用 %clr
關鍵字轉換。好比想使文本變爲黃色 %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}
。目前支持的顏色有(blue
、cyan
、faint
、green
、magenta
、red
、yellow
)apache
默認狀況下,SpringBoot
僅將日誌輸出到控制檯,不會寫入到日誌文件中去。若是除了控制檯輸出以外還想寫日誌文件,則須要在application.properties
設置logging.file
或 logging.path
屬性。微信
spring.log
寫入到指定的 文件夾 中,如(/var/log
)日誌文件在達到 10MB
時進行切割,產生一個新的日誌文件(如:spring.1.log、spring.2.log
),新的日誌依舊輸出到 spring.log
中去,默認狀況下會記錄 ERROR
、WARN
、INFO
級別消息。mybatis
因爲日誌在 ApplicationContext
以前就初始化好了,因此 SpringBoot
爲咱們提供了 logging.config
屬性,方便咱們配置自定義日誌文件。默認狀況它會根據日誌的依賴自動加載。app
Logging System | Customization |
---|---|
JDK (Java Util Logging) |
logging.properties |
Log4j2 、ERROR |
log4j2-spring.xml 或 log4j2.xml |
Logback |
logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy |
該擴展配置僅適用 logback-spring.xml
或者設置 logging.config
屬性的文件,由於 logback.xml
加載過早,所以沒法獲取 SpringBoot
的一些擴展屬性框架
使用擴展屬性 springProfile
與 springProperty
讓你的 logback-spring.xml
配置顯得更有逼格,當別人還在苦苦掙扎弄logback-{profile}.xml的時候 你一個文件就搞定了...
<springProfile>
標籤使咱們讓配置文件更加靈活,它能夠選擇性的包含或排除部分配置。
<springProfile name="dev"> <!-- 開發環境時激活 --> </springProfile> <springProfile name="dev,test"> <!-- 開發,測試的時候激活--> </springProfile> <springProfile name="!prod"> <!-- 當 "生產" 環境時,該配置不激活--> </springProfile>
<!-- 開發環境日誌級別爲DEBUG/而且開發環境不寫日誌文件 --> <springProfile name="dev"> <root level="DEBUG"> <appender-ref ref="STDOUT"/> </root> </springProfile> <!-- 測試環境日誌級別爲INFO/而且記錄日誌文件 --> <springProfile name="test"> <root level="INFO"> <appender-ref ref="FILE"/> <appender-ref ref="STDOUT"/> </root> </springProfile>
<springProperty>
標籤可讓咱們在 Logback 中使用 Spring Environment 中的屬性。若是想在logback-spring.xml
中回讀 application.properties
配置的值時,這是一個很是好的解決方案
<!-- 讀取 spring.application.name 屬性來生成日誌文件名 scope:做用域 name:在 logback-spring.xml 使用的鍵 source:application.properties 文件中的鍵 defaultValue:默認值 --> <springProperty scope="context" name="logName" source="spring.application.name" defaultValue="myapp.log"/> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/${logName}.log</file> </appender>
目前不少大佬都寫過關於 SpringBoot
的教程了,若有雷同,請多多包涵,本教程基於最新的 spring-boot-starter-parent:2.0.1.RELEASE
編寫,包括新版本的特性都會一塊兒介紹...
battcn