Spring Boot 简明教程

Spring Boot - Logging

Spring Boot 使用 Apache Commons 记录所有内部记录。Spring Boot 的默认配置为使用 Java Util 记录、Log4j2 和 Logback 提供支持。使用这些,我们可以配置控制台记录以及文件记录。

如果您使用的是 Spring Boot Starter,则 Logback 将很好地支持记录。此外,Logback 同样为通用记录、Util 记录、Log4J 和 SLF4J 提供良好的支持。

Log Format

Spring Boot 的 Log 默认格式如下面给出的屏幕截图中所示。

spring boot log format

它向您提供以下信息 −

  1. DateTime ,它们给出了日志的日期和时间

  2. Log level 表示 INFO、ERROR 或 WARN

  3. Process ID

  4. 分隔符 ---

  5. Thread name 用方括号 [] 括起来

  6. Logger Name 表示 Source 类名

  7. The Log message

Console Log Output

默认日志消息将打印到控制台窗口。默认情况下,“INFO”、“ERROR”和“WARN”日志消息将打印到日志文件中。

如果您必须启用调试级别日志,请使用以下所示的命令在启动应用程序时添加调试标志 -

java –jar demo.jar --debug

您还可以将调试模式添加到 application.properties 文件,如下所示 -

debug = true

File Log Output

默认情况下,所有日志都将打印在控制台窗口中,而不在文件中。如果您想在文件中打印日志,则需要在 application.properties 文件中设置属性 logging.filelogging.path

您可以使用以下所示的属性指定日志文件路径。请注意,日志文件名是 spring.log。

logging.path = /var/tmp/

您可以使用以下所示的属性指定自己的日志文件名 -

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

Note - 文件在达到 10 MB 大小时将自动轮换。

Log Levels

Spring Boot 支持所有日志记录级别,例如“TRACE”、“DEBUG”、“INFO”、“WARN”、“ERROR”、“FATAL”、“OFF”。您可以按如下所示在 application.properties 文件中定义 Root 记录器 -

logging.level.root = WARN

Note - Logback 不支持“FATAL”级别日志。它映射到“ERROR”级别日志。

Configure Logback

Logback 支持基于 XML 的配置来处理 Spring Boot Log 配置。日志配置详细信息配置在 logback.xml 文件中。logback.xml 文件应放置在类路径下。

您可以使用以下给出的代码在 Logback.xml 文件中配置 ROOT 级别日志 -

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

您可以使用下面给出的代码在 Logback.xml 文件中配置控制台追加程序。

<?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 文件中配置文件追加程序。请注意,您需要在文件追加程序内部指定日志文件路径。

<?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>

下面给出的代码展示如何将 slf4j 记录器添加到 Spring Boot 主类文件中。

package com.tutorialspoint.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);
   }
}

您可以在控制台窗口中看到的输出显示在这里 -

logger console window

您可以在日志文件中看到的输出显示在这里 -

log output