目录
一 基础概念
1 基础版
2 改进版
二 日志级别
常见日志级别(从低到高详细度/从高到低严重性)
三 基础使用
1 级别调节
2 日志的文件输出
3 文件归档与滚动切割
4 也可以自动创建一个配置文件
5 切换日志框架
一 基础概念
日志框架对比总结
框架类型 | 代表 | 优势 | 劣势 |
---|---|---|---|
日志门面 | SLF4J | 高灵活性,参数化日志支持 | 需绑定具体实现 |
日志实现 | Logback | 高性能,原生支持SLF4J | 功能扩展性弱于Log4j2 |
日志实现 | Log4j2 | 异步日志、无垃圾模式,性能最优 | 配置复杂度较高 |
-
SLF4J + Logback
-
Spring Boot默认组合,性能优异且配置灵活。
-
-
SLF4J + Log4j2
-
高性能场景的首选,支持异步日志和复杂过滤策略。
-
日志:日志是系统和应用程序在运行过程中记录的关键信息,涵盖事件、状态变更、错误、用户操作等内容。
1 基础版
package org.example.springmvc;import org.junit.jupiter.api.Test;
import org.junit.platform.commons.logging.Logger;
import org.junit.platform.commons.logging.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class LogTest {@Testpublic void testLog() {//格式 时间 日志级别 日志信息// 获取一个日志记录器Logger logger = LoggerFactory.getLogger(LogTest.class);//开始记录日志logger.trace(() -> "追踪日志...");logger.debug(() -> "调试日志...");logger.info(() -> "信息日志...");logger.warn(() -> "警告日志...");logger.error(() -> "错误日志...");}
}
2 改进版
package org.example.springmvc;import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@Slf4j
@SpringBootTest
public class LogTest {@Testpublic void testLog() {//开始记录日志log.trace("追踪日志...");log.debug("调试日志...");log.info("信息日志...");log.warn("警告日志...");log.error("错误日志...");}
}
二 日志级别
常见级别:all - trace - debug - info - warn - error -fatal - off
级别越来越高,信息越来越粗糙。日志有一个默认级别(INFO),只会打印这个级别之上的所有。
常见日志级别(从低到高详细度/从高到低严重性)
级别 | 典型使用场景 | 示例日志内容 |
---|---|---|
TRACE | 最详细的调试信息,用于追踪程序每一步执行(如循环内部状态、低层逻辑)。通常仅在开发阶段启用。 | 进入方法 calculatePrice,参数: itemId=1001, quantity=2 |
DEBUG | 详细的运行时信息,用于调试问题(如变量值、分支逻辑)。开发环境常用,生产环境按需临时开启。 | 用户ID 12345 的购物车中有 3 件商品,总金额 $299.99 |
INFO | 常规的系统运行状态,记录关键业务流程节点(如服务启动、配置加载、用户操作)。生产环境默认级别。 | 订单 67890 支付成功,金额 $150.00 |
WARN | 潜在问题警告,不影响系统继续运行但需关注(如低内存、重试操作、降级策略触发)。 | 数据库连接池使用率超过80%,当前连接数: 48/50 |
ERROR | 运行时错误,导致当前操作失败但系统仍可运行(如外部API调用失败、文件未找到、业务逻辑异常)。 | 支付网关请求失败: 连接超时 (订单ID: 67890) |
FATAL | 致命错误,导致系统崩溃或无法恢复(如内存溢出、关键资源不可用)。需立即人工干预。 | JVM 内存溢出: java.lang.OutOfMemoryError |
三 基础使用
1 级别调节
调级别:(所有)
logging.level.root=debug
调级别:(指定)
logging.level.org.example.springmvc=debug
日志分组调级别:(指定组别)
logging.group.biz=org.example.springmvc.dao,org.example.springmvc.service
logging.level.biz=debug
2 日志的文件输出
指定文件名在当前项目下生成(指定的是名称)
logging.file.name=boot.log
指定路径在路径下创建(指定的是路径,名称会有默认名称:spring.log)
logging.file.path=D://myLog
两个都指定:以文件名为准
3 文件归档与滚动切割
- 归档:每天的日志单独到一个文档中。
- 切割:每个文件10MB,超过小切割成另外一个文件。
0B 不限制大小
4 也可以自动创建一个配置文件
如果你想快速修改日志的配置,就在SpringBoot的配置文件中修改,如果你有原生日志的全量配置,直接使用原生框架的这些配置。