Spring Boot紀錄檔


Spring Boot使用Apache Commons紀錄檔記錄進行所有內部紀錄檔記錄。Spring Boot的預設組態支援使用Java Util Logging,Log4j2和Logback。 使用這些,可以組態控制台紀錄檔記錄以及檔案紀錄檔記錄。

如果使用的是Spring Boot Starters,Logback將為紀錄檔記錄提供良好的支援。 此外,Logback還提供對Common Logging,Util Logging,Log4J和SLF4J的良好支援。

紀錄檔格式

預設的Spring Boot Log格式顯示在下面給出的螢幕截圖中。

它提供以下資訊 -

  • 提供紀錄檔日期和時間的日期和時間。
  • 紀錄檔級別顯示有:INFO,ERROR或WARN。
  • 進程ID。
  • ---是一個分隔符。
  • 執行緒名稱括在方括號[]中。
  • 記錄器名稱,顯示源類名稱。
  • 紀錄檔訊息。

控制台紀錄檔輸出

預設紀錄檔訊息將列印到控制台視窗。 預設情況下,INFOERRORWARN紀錄檔訊息將列印在紀錄檔檔案中。
如果必須啟用偵錯級別紀錄檔,請使用以下命令在啟動應用程式時新增偵錯標誌 -

java –jar demo.jar --debug

還可以將偵錯模式新增到application.properties 檔案中,如下所示 -

debug = true

檔案紀錄檔輸出

預設情況下,所有紀錄檔都將在控制台視窗中列印,而不是在檔案中列印。 如果要在檔案中列印紀錄檔,則需要在application.properties 檔案中設定屬性logging.filelogging.path
可以使用下面顯示的屬性指定紀錄檔檔案路徑。 請注意,紀錄檔檔案名是spring.log

logging.path = /var/tmp/

使用下面顯示的屬性指定自己的紀錄檔檔案名 -

logging.file = /var/tmp/mylog.log

注意 - 檔案將在達到10MB後自動旋轉生成。

紀錄檔級別

Spring Boot支援所有記錄器級別,例如:TRACEDEBUGINFOWARNERRORFATALOFF。在application.properties 檔案中定義Root logger,如下所示 -

logging.level.root = WARN

註 - Logback不支援「FATAL」級別紀錄檔。 它對映到「ERROR」級別紀錄檔。

組態Logback

Logback支援基於XML的組態來處理Spring Boot Log組態。紀錄檔組態詳細資訊在logback.xml檔案中組態。logback.xml檔案應放在classpath下。
可以使用下面給出的程式碼在Logback.xml檔案中組態ROOT級別紀錄檔 -

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <root level = "INFO">
   </root>
</configuration>

在下面給出的Logback.xml檔案中組態控制台appender

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
   <root level = "INFO">
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

使用下面給出的程式碼在Logback.xml檔案中組態檔案appender。 請注意,需要在檔案追加器中指定紀錄檔檔案路徑。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
   </appender>   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
   </root>
</configuration>

使用下面給出的程式碼在logback.xml檔案中定義紀錄檔模式。還使用下面給出的程式碼在控制台或檔案紀錄檔附加程式中定義支援的紀錄檔模式集 -

<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>

完整的logback.xml檔案的程式碼如下所示。必須將其放在類路徑中。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>

   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>

   <root level = "INFO">
      <appender-ref ref = "FILE"/>
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

下面給出的程式碼顯示了如何在Spring Boot主類檔案中新增slf4j logger。

package com.yiibai.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
   private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);

   public static void main(String[] args) {
      logger.info("this is a info message");
      logger.warn("this is a warn message");
      logger.error("this is a error message");
      SpringApplication.run(DemoApplication.class, args);
   }
}

在控制台視窗中看到的輸出顯示在此處 -

在此處顯示紀錄檔檔案中顯示的輸出 -