【注】本文译自:https://www.tutorialspoint.com/spring_boot/spring_boot_logging.htm
Spring Boot 应用 Apache Commons logging 作为外部日志。Spring Boot 缺省配置提供对于 Java Util Logging, Log4j2 和 Logback 的反对。这样,咱们能够配置控制台或者文件日志。
如果应用 Spring Boot 启动器,Logback 会提供很好的日志反对。此外,Logback 对 Common Logging、Util Logging、Log4J 和 SLF4J 的反对也不错。
Log 格局
缺省 Spring Boot 的日志格局如下图所示:
提供了以下信息:
- Date 和 Time 给出日志的日期和工夫
- Log level 显示 INFO, ERROR 或 WARN
- Process ID
- 用 — 作为分隔符
- Thread name 在 方括号 [] 内
- Logger Name 显示源类名
- 日志音讯
控制台日志输入
默认日志音讯会打印到控制台窗口。短少状况下,“INFO”,“ERROR”和“WARN”日志音讯会在日志文件中打印。
如果要容许 debug 级别的日志,用命令行启动利用时加上 debug 标识,如下所示:
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
Logback 反对基于 XML 的配置来解决 Spring Boot 日志配置。日志配置细节在 logback.xml 配置文件中。logback.xml 文件该当位于 classpath 门路下。
能够在 Logback.xml 文件中配置根级别日志,如下所示:
<?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,如下所示。留神须要在 file 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 文件如下,须要放在 class path 门路下:
<?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 logger:
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);
}
}
控制台窗口输入如下所示:
日志文件输入如下所示: