SLF4J日志快速上手
tags: SpringBoot 日志 快速上手
SLF4J日志快速上手
第一步:添加日志相关配置
logging:
level:
root: INFO # 设置全局日志级别为 INFO,只显示重要的日志信息(略过 DEBUG 和 TRACE 级别)
# org.hibernate.SQL: DEBUG # 对于 Hibernate SQL 查询,使用 DEBUG 级别 (如果你用的是别的数据库操作,就别写这一行了)
第二步:项目启动时,输出一些信息
- 在SpringBoot项目里添加
StartupLogger
- 添加一个方法,并使用
@PostConstruct
注解
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class StartupLogger {
private static final Logger logger = LoggerFactory.getLogger(StartupLogger.class);
@PostConstruct
public void logOnStartup() {
logger.info("""
Spring Boot application has started!
""");
}
}
项目启动之后,会在控制台看到类似的信息:
2024-11-22 10:34:09.544 INFO 14248 --- [ main] c.u.b.core.learning.StartupLogger :
Spring Boot application has started!
第三步:接口被调用时,输出一些信息
- 创建
LoggingController
类,编写可供调用的接口。接着在拦截器里调整对这个接口的限制。 - 使用
logger
输出不同类型的日志。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class LoggingController {
// 使用 SLF4J Logger 来进行日志记录
private static final Logger logger = LoggerFactory.getLogger(LoggingController.class);
// 定义一个 GET 请求的端点
@GetMapping("/logExample")
public String logExample() {
// 输出信息日志
logger.info("logExample endpoint has been called");
// 输出调试日志:可以帮助开发者在调试阶段追踪程序执行
logger.debug("Debugging log for logExample endpoint");
// 输出警告日志:记录可能对系统稳定性造成影响的情况
logger.warn("This is a warning message");
// 输出错误日志:当系统发生异常或错误时,记录详细信息
logger.error("This is an error message");
// 返回响应信息
return "Logging example complete!";
}
}
http://localhost:8080/test/logExample
接口被调用时,后台输出如下内容:
2024-11-22 10:50:01.304 INFO 9500 --- [nio-8080-exec-2] c.u.b.core.learning.LoggingController : logExample endpoint has been called
2024-11-22 10:50:01.304 WARN 9500 --- [nio-8080-exec-2] c.u.b.core.learning.LoggingController : This is a warning message
2024-11-22 10:50:01.304 ERROR 9500 --- [nio-8080-exec-2] c.u.b.core.learning.LoggingController : This is an error message
注意,logger.debug(**)
并未输出信息,这是因为我们在配置中设置日志级别为INFO
。
其他内容
参数化日志、异常堆栈跟踪、自定义日志格式、性能调优:延迟日志记录、日志文件输出、多种日志级别的使用(TRACE, DEBUG, INFO, WARN, ERROR)、异常记录和自定义异常格式、日志分级(如:按包名分配日志级别)、使用日志占位符、日志轮换(日志文件切割)、多线程日志输出、日志聚合(集中式日志管理,如ELK堆栈)、外部日志框架(如Logback、Log4j2)配置、结合AOP进行方法级日志记录、环境变量与日志相关配置、记录访问日志与请求响应时间