SpringBoot基礎教程2-1-4 日誌規範-基礎配置詳解

1. 概述

不須要任何配置,只須要添加spring-boot-starter-web依賴,SpringBoot已經爲咱們集成日誌框架,默認使用logbackhtml

在項目根目錄使用maven命令mvn dependency:tree,查看依賴結果以下java

建立主函數,運行後,能夠看到,SpringBoot默認日誌格式以下git

格式解析:(默認採用顏色日誌)github

  • 時間日期:精確到毫秒,能夠用於排序
  • 日誌級別:ERROR、WARN、INFO、DEBUG、TRACE
  • 進程ID
  • 分隔符:採用 --- 來標識日誌開始部分
  • 線程名:方括號括起來(可能會截斷控制檯輸出)
  • Logger名:一般使用源代碼的類名
  • 日誌內容:咱們輸出的消息

2. 顏色日誌

SpringBoot 2.0.3默認開啓顏色日誌,判斷終端是否支持ANSI,支持則打印顏色日誌,也能夠在application.yml文件修改spring.output.ansi.enabled來修改默認值web

  • ALWAYS: 啓用 ANSI 顏色的輸出。
  • DETECT: 嘗試檢測 ANSI 着色功能是否可用(默認值)。
  • NEVER: 禁用 ANSI 顏色的輸出。

%clr修改顏色。好比想使文本變爲黃色 %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}。目前支持的顏色有(blue、cyan、faint、green、magenta、red、yellow)spring

3. 日誌級別

SpringBoot 默認爲咱們輸出的日誌級別爲 INFO、WARN、ERROR,如須要輸出更多日誌的時候,能夠經過如下方式開啓app

  • 命令模式: java -jar app.jar --debug=true , 這種命令會被 SpringBoot 解析,且優先級最高
  • 配置模式:Chaper1-1-2提到的配置debug: true該配置只對嵌入式容器、Spring、Hibernate生效

本身項目須要手動配置日誌級別,配置規則:logging.level.<logger-name>=<level>,或者,logging.level.<目錄>=<level>框架

logging:
  level:
    # org.springframework.web目錄下日誌級別debug
    org.springframework.web: debug
    # com.mkeeper目錄下日誌級別info
    com.mkeeper: info
    # com.mkeeper.controller.off目錄下日誌關閉
    com.mkeeper.controller.off: off

4. 日誌輸出格式

  • logging.pattern.console: 定義輸出到控制檯的格式(不支持JDK Logger)
  • logging.pattern.file: 定義輸出到文件的格式(不支持JDK Logger)

5. 文件日誌

SpringBoot默認只輸出控制檯,不輸出文件;經過下面配置添加文件日誌輸出maven

  • logging.file 將日誌寫入到指定的 文件 中,默認爲相對路徑,能夠設置成絕對路徑
  • logging.path 將名爲 spring.log 寫入到指定的文件夾中
  • logging.file.max-size 限制日誌文件大小,日誌文件在達到規定大小時進行切割,產生一個新的日誌文件
  • logging.file.max-history 限制日誌保留天數,到期自動刪除

6. 推薦@Slf4j

若是不想每次都寫private final Logger logger = LoggerFactory.getLogger(XXX.class); 能夠用註解@Slf4j,該註解依賴lombokslf4j(SpringBoot已經自動配置,不用手動添加)函數

@Slf4j
@RestController
public class LogController {
    //若是不想每次都寫private final Logger logger = LoggerFactory.getLogger(XXX.class); 能夠用註解@Slf4j
    //private final Logger logger = LoggerFactory.getLogger(LogController.class)

    @GetMapping("/log")
    public void log(){
        log.debug(this.getClass().getSimpleName() + ": debug");
        log.info(this.getClass().getSimpleName() + ": info");
        log.warn(this.getClass().getSimpleName() + ": warn");
        log.error(this.getClass().getSimpleName() + ": error");
    }
}

7. 總結

推薦閱讀官方文檔瞭解更多日誌配置細節,有任何建議,歡迎留言探討,本文源碼


歡迎關注博主公衆號:Java十分鐘

歡迎關注博主公衆號

相關文章
相關標籤/搜索