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格式顯示在下面給出的屏幕截圖中。
Spring Boot日誌

它提供以下信息 -

  • 提供日誌日期和時間的日期和時間。
  • 日誌級別顯示有: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);
   }
}

在控制檯窗口中看到的輸出顯示在此處 -
Spring Boot日誌

在此處顯示日誌文件中顯示的輸出 -
Spring Boot日誌