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 日志格式如下面的屏幕截图所示。
它为您提供以下信息 –
- 日期和时间,给出日志的日期和时间
- 日志级别显示 INFO、ERROR 或 WARN
- 进程号
- — 这是一个分隔符
- 线程名称括在方括号 [] 内
- 显示源类名称的记录器名称
- 日志消息
控制台日志输出
默认日志消息将打印到控制台窗口。默认情况下,“INFO”、“ERROR”和“WARN”日志消息将打印在日志文件中。
如果您必须启用调试级别日志,请使用如下所示的命令在启动应用程序时添加调试标志 –
java –jar demo.jar --debug
您还可以将调试模式添加到您的 application.properties 文件中,如下所示 –
debug = true
文件日志输出
默认情况下,所有日志都将打印在控制台窗口上,而不是文件中。如果要打印文件中的日志,则需要在 application.properties 文件中设置属性logging.file或logging.path 。
您可以使用下面显示的属性指定日志文件路径。请注意,日志文件名为 spring.log。
logging.path = /var/tmp/
您可以使用如下所示的属性指定自己的日志文件名 –
logging.file = /var/tmp/mylog.log
注意– 文件将在达到 10 MB 大小后自动旋转。
日志级别
Spring Boot 支持所有记录器级别,例如“TRACE”、“DEBUG”、“INFO”、“WARN”、“ERROR”、“FATAL”、“OFF”。您可以在 application.properties 文件中定义根记录器,如下所示 –
logging.level.root = WARN
注意– Logback 不支持“FATAL”级别的日志。它被映射到“ERROR”级别的日志。
配置回退
Logback 支持基于 XML 的配置来处理 Spring Boot 日志配置。日志记录配置详细信息在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>
下面给出的代码显示了如何在 Spring Boot 主类文件中添加 slf4j 记录器。
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); } }
您可以在控制台窗口中看到的输出如下所示 –
您可以在日志文件中看到的输出如下所示 –