更多Spring文章,歡迎點擊 一灰灰Blog-Spring專題html
對於一個後端來講,日誌是不可缺乏的,這個東西,形象點就像劍客手中的劍,沒有劍你就刷不了帥,砍不了人。因此就有必要好好的說道說道,這個日誌文件的管理了。本篇博文將關注如下幾點內容java
<!-- more -->git
建立一個SpringBoot項目,根據官方文檔的說明,默認選擇的是Logback來記錄日誌;logback也是相對來講用的比較多的框架了,下文全都默認以logback做爲日誌輸出框架github
By default, if you use the 「Starters」, Logback is used for logging. Appropriate Logback routing is also included to ensure that dependent libraries that use Java Util Logging, Commons Logging, Log4J, or SLF4J all work correctly.spring
完整的pom依賴以下,即不須要引入什麼特別的依賴,基本上就是SpringBoot項目最根本的項目結構後端
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </pluginManagement> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
寫一個簡單的日誌測試框架
@Slf4j @SpringBootApplication public class Application { public Application() { log.debug("---> debug start! <------"); log.info("---> info start! <------"); log.warn("---> warn start! <------"); log.error("---> error start! <------"); System.out.println("===> System.out.println <====="); } public static void main(String[] args) { SpringApplication.run(Application.class); } }
看下控制檯輸出結果,info,warn,error能夠正常輸出且輸出格式包含一些附加信息,System.out也能夠正常輸出,debug的日誌沒有maven
2018-09-26 14:16:01.136 INFO 38924 --- [ main] com.git.hui.boot.log.Application : ---> info start! <------ 2018-09-26 14:16:01.137 WARN 38924 --- [ main] com.git.hui.boot.log.Application : ---> warn start! <------ 2018-09-26 14:16:01.137 ERROR 38924 --- [ main] com.git.hui.boot.log.Application : ---> error start! <------ ===> System.out.println <=====
接下來在進入logback的配置文件以前,先看一下默認的配置有哪些,以及如何使用spring-boot
默認是不輸出debug日誌的,若是須要,則須要在配置文件中添加 debug=true
屬性;一樣能夠設置trace=true
,就能夠看應用輸出的trace日誌學習
然而,即使開啓了debug,上面測試中的debug日誌也依然沒有,那須要輸出上面的debug日誌,應該怎麼設置?
上面的配置雖然在控制檯打印了一些debug日誌,但並無打印咱們業務代碼中的debug日誌,須要開啓這個,須要以下設置
logging.level.root=DEBUG logging.level.org.springframework=INFO logging.level.org.hibernate=ERROR
上面這個配置就是指定包下日誌輸出的等級,root表示默認的級別
如上配置後,再次執行上面的代碼,輸出結果以下
默認的輸出格式如前面的截圖,若是但願更改下輸出的日誌格式,能夠經過修改屬性來完成,一個也實例以下
logging.pattern.console=%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
再次執行,輸出樣式以下
至於這個屬性值的構成原則,在後面說到logback.xml
配置文件語法時,一併再說
說明
還有個參數能夠設置文本的顏色,我的感受實用性不是特別大,只貼下配置以下
## 檢測終端是否支持ANSI,是的話就採用彩色輸出 spring.output.ansi.enabled=detect ## %clr(){} 格式,使文本以藍色輸出 logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS} %thread] %-5level %logger{36} - %msg%n){blue}
上面全部的日誌都是輸出到控制檯,在實際的生成環境中,通常要求日誌寫到文件,能夠方便隨時進行查看,經過設置相關參數也能夠很簡單實現
## 輸出的日誌文件 logging.file=logs/info.log ## 當文件超過1G時,歸檔壓縮 logging.file.max-size=1GB ## 日誌文件最多保存3天 logging.file.max-history=3
一樣執行前面的代碼兩次,輸出以下, 兩次的輸出結果均可以在日誌文件中查到,相比較於控制檯而言,用於查歷史日誌就更加的方便了
上圖中,控制檯的輸出格式和日誌文件的輸出格式不同,由於前面修改了控制檯的輸出樣式;若是但願修改文件中的日誌格式,也能夠經過修改配置logging.pattern.file
來實現
上面的配置雖然ok,可是對於Logback而言,仍是有不少高級特性不太好配置,所以SpringBoot仍是支持經過加載logback-spring.xml
配置文件來定義日誌相關的參數,只須要在資源文件目錄下添加 logback-spring.xml
或者 logging.config
便可
一灰灰的我的博客,記錄全部學習和工做中的博文,歡迎你們前去逛逛
盡信書則不如,已上內容,純屬一家之言,因我的能力有限,不免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激
一灰灰blog
知識星球