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 springBootApp.jar --debug

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

debug = true

文件日志输出

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

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

logging.path = /var/tmp/

可以使用下面显示的属性指定自己的日志文件名

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

注意 : 文件将在达到 10 MB 大小后自动旋转。


日志级别

Spring Boot 支持所有 logger 级别,例如 TRACEDEBUGINFOWARNERRORFATALOFF。 我们可以在 application.properties 文件中定义 Root 记录器,如下所示

logging.level.root = WARN

注意 - Logback 不支持 FATA 级别的日志。 它映射到“ERROR”级别的日志。


配置 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 文件的代码如下所示。 你必须把它放在类路径,classpath,中。

<?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 记录器。

package com.study;

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

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

    public static void main(String[] args) {
        logger.info("这是一条 info 级别的日志");
        logger.warn("这是一条 warn 级别的日志");
        logger.error("这是一条 error 级别的日志");
        SpringApplication.run(MyApplication.class, args);
    }
}

我们可以在控制台窗口中看到的输出显示在此处

spring boot 自定义日志

同样的信息,我们也可以在自定义的日志文件中看到

查看笔记

扫码一下
查看教程更方便