基础
日志系统有 日志门面 和 日志实现(类似JDBC和MySQL的关系)
日志门面用于统一接口,可以切换不同的日志实现
Spring Boot中的日志
Spring Boot默认使用SLF4j作为日志门面,Logback作为日志实现框架,但同时也支持Java Util Logging、Log4J2等其他日志实现。
通过默认引入spring-boot-starter-logging
依赖,Spring Boot会自动配置这些日志框架,并将其集成到项目中。
当Spring Boot启动时,会创建一个SpringApplication
实例,并通过LoggingApplicationListener
监听器来初始化日志系统。这个监听器会在Spring Boot启动过程中响应不同的事件(如ApplicationStartingEvent
),并根据这些事件加载和配置日志框架。
日志配置
日志配置可以通过application.properties
或application.yml
文件进行设置。例如,可以设置日志级别、日志文件路径、日志格式等。Spring Boot还支持通过XML配置文件(如logback-spring.xml
)来进一步定制日志输出
配置项
日志输出格式:logging.pattern
日志级别调整:logging.level
日志文件输出:logging.file
日志文件归档:
Spring Boot默认使用的logback可以通过application.properties
或application.yml
文件进行设置。log4j2等需要自行创建xml配置文件。
日志归档配置:logging.logback.rollingpolicy
日志使用
经典方式使用LoggerFactory:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class TestController { Logger logger = LoggerFactory.getLogger(TestController.class); @GetMapping("/test") public String test() { logger.info("test"); return "test"; }
}
使用lombok注解@Slf4j
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @Slf4j
@RestController
public class TestController { @GetMapping("/test") public String test() { log.info("test"); return "test"; }
}