SpringBoot基礎篇日誌管理之默認配置

更多Spring文章,歡迎點擊 一灰灰Blog-Spring專題html

對於一個後端來講,日誌是不可缺乏的,這個東西,形象點就像劍客手中的劍,沒有劍你就刷不了帥,砍不了人。因此就有必要好好的說道說道,這個日誌文件的管理了。本篇博文將關注如下幾點內容java

  • 日誌級別選擇
  • 日誌輸出到文件
  • 格式化輸出
  • 日誌文件管理(自動刪除,壓縮歸檔等)
  • 經常使用的logback-spring.xml配置

<!-- more -->git

I. 默認日誌參數

1. 基礎項目搭建

建立一個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 <=====

2. 配置說明

接下來在進入logback的配置文件以前,先看一下默認的配置有哪些,以及如何使用spring-boot

a. debug日誌支持

默認是不輸出debug日誌的,若是須要,則須要在配置文件中添加 debug=true 屬性;一樣能夠設置trace=true,就能夠看應用輸出的trace日誌學習

然而,即使開啓了debug,上面測試中的debug日誌也依然沒有,那須要輸出上面的debug日誌,應該怎麼設置?

b. log levels

上面的配置雖然在控制檯打印了一些debug日誌,但並無打印咱們業務代碼中的debug日誌,須要開啓這個,須要以下設置

logging.level.root=DEBUG
logging.level.org.springframework=INFO
logging.level.org.hibernate=ERROR

上面這個配置就是指定包下日誌輸出的等級,root表示默認的級別

如上配置後,再次執行上面的代碼,輸出結果以下

log level測試

c. 輸出格式

默認的輸出格式如前面的截圖,若是但願更改下輸出的日誌格式,能夠經過修改屬性來完成,一個也實例以下

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}

d. 輸出文件

上面全部的日誌都是輸出到控制檯,在實際的生成環境中,通常要求日誌寫到文件,能夠方便隨時進行查看,經過設置相關參數也能夠很簡單實現

## 輸出的日誌文件
logging.file=logs/info.log
## 當文件超過1G時,歸檔壓縮
logging.file.max-size=1GB
## 日誌文件最多保存3天
logging.file.max-history=3

一樣執行前面的代碼兩次,輸出以下, 兩次的輸出結果均可以在日誌文件中查到,相比較於控制檯而言,用於查歷史日誌就更加的方便了

輸出文件演示

上圖中,控制檯的輸出格式和日誌文件的輸出格式不同,由於前面修改了控制檯的輸出樣式;若是但願修改文件中的日誌格式,也能夠經過修改配置logging.pattern.file來實現

e. logback.xml配置

上面的配置雖然ok,可是對於Logback而言,仍是有不少高級特性不太好配置,所以SpringBoot仍是支持經過加載logback-spring.xml配置文件來定義日誌相關的參數,只須要在資源文件目錄下添加 logback-spring.xml 或者 logging.config 便可

II. 其餘

相關文檔

0. 項目

1. 一灰灰Blog

一灰灰的我的博客,記錄全部學習和工做中的博文,歡迎你們前去逛逛

2. 聲明

盡信書則不如,已上內容,純屬一家之言,因我的能力有限,不免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激

3. 掃描關注

一灰灰blog

QrCode

知識星球

goals

相關文章
相關標籤/搜索