您的位置:

SpringBoot 日志级别详解

一、日志级别是什么

日志级别是指记录日志信息的重要程度,用于限制输出日志的详细程度。不同的日志级别会对应不同的日志输出,具体有DEBUG、INFO、WARN、ERROR、FATAL五种级别。DEBUG最低,FATAL最高。默认情况下,SpringBoot日志级别是INFO。

二、SpringBoot中常用的日志框架

SpringBoot中提供了默认的Logback框架进行日志记录,但也支持其他的日志框架,如Log4j2、Java Logging。

三、SpringBoot日志配置文件

在SpringBoot中,日志的配置文件为“application.properties”、“application.yml”两种,它们都位于"classpath:"路径下。这些文件描述了日志记录器的行为和可选的输出格式。在"application.properties"或"application. yml"文件中配置日志级别很容易。例如:

logging.level.root=INFO 
logging.level.org.springframework.web=DEBUG 
logging.level.com.example=TRACE
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n

四、配置日志级别

1. 配置全局日志级别

我们可以使用“logging.level.root”配置全局日志级别,例如,我们将日志级别配置为DEBUG:

logging.level.root=DEBUG

2. 配置指定类的日志级别

我们也可以单独配置某个类的日志级别,例如,我们将"org.springframework.web"的日志级别配置为DEBUG:

logging.level.org.springframework.web=DEBUG

3. 日志级别的优先级

如果多个配置指定了相同的日志级别,那么它们的优先级是"root"最低,"application"包中的次之,"thirdparty"最高。

logging.level.root=DEBUG 
logging.level.org.springframework.web=DEBUG 
logging.level.com.example=TRACE

五、配置输出格式

除了日志级别的配置,我们还可以指定日志输出的格式。SpringBoot在"application.properties"或"application.yml" 中设置“logging.pattern.console”来配置格式。例如,我们将日志输出格式配置为“%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n”:

logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n

六、使用@Loggable注解

在SpringBoot中,使用@Loggable注解可以简单地在类或方法上应用AOP日志拦截器。例如,我们可以引入“org.springframework.boot:spring-boot-starter-aop”依赖,然后在类或方法上添加@Loggable注解。

import org.springframework.stereotype.Component; 
import com.github.f4b6a3.ulid.Ulid; 
import lombok.extern.slf4j.Slf4j; 

@Component 
@Slf4j(topic = "example") 
public class MyClass {

    @Loggable 
    public void myMethod(String arg1, int arg2) {
        ...
    }
}

七、小结

SpringBoot中提供了三种设置日志级别的方式:全局、指定类和优先级。此外,我们还可以指定日志输出的格式并使用@Loggable注解实现AOP日志拦截。不同的日志级别和输出格式可以让我们更好地了解应用程序的运行情况,从而快速进行调试、排查问题。