跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Spring Boot 日志实战:级别、持久化与 SLF4J 配置指南

Spring Boot 日志实战涵盖日志定义、级别分类及持久化配置。通过 SLF4J 与 Lombok 简化代码,演示如何调整日志级别与文件滚动策略。解决生产环境日志丢失与调试困难问题,提供 YAML 与 Properties 两种配置方案。

乱七八糟发布于 2026/3/26更新于 2026/10/24112 浏览
Spring Boot 日志实战:级别、持久化与 SLF4J 配置指南

Spring Boot 日志实战:级别、持久化与 SLF4J 配置指南

日志本质上是系统、软件或设备按时间顺序记录操作、事件或状态的文件文本,用于最终历史、排查问题和审计。

Spring Boot 项目在启动时就有默认的日志输出,这为我们提供了基础的可观测性。

日志输出示例

核心作用

  • 问题排查:当软件崩溃、系统出错时,日志会记录错误代码、发生时间和上下文,帮助技术人员定位原因。
  • 行为审计:记录用户的关键操作,比如谁登录了系统、谁修改了文件,用于追溯责任或合规检查。
  • 状态监控:实时记录系统资源使用情况,如 CPU 占用率、内存使用量,帮助发现性能瓶颈。

日志的级别分类

日志的级别从高到低依次为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE。

  • FATAL: 致命信息,表示需要立即被处理的系统级错误。
  • ERROR: 错误信息,级别较高的错误日志信息,但不影响系统的继续运行。
  • WARN: 警告信息,不影响使用,但需要注意。
  • INFO: 普通信息,用于记录应用程序正常运行时的一些信息。
  • DEBUG: 调试信息,需要调试时候的关键信息打印。
  • TRACE: 追踪信息,比 DEBUG 更细粒度的信息事件。

日志级别的使用

Spring Boot 默认的日志框架是 Logback,Logback 没有 FATAL 级别,它会被映射到 ERROR。

@RestController
@RequestMapping("/logger")
public class LoggerController {
    private final static Logger logger = LoggerFactory.getLogger(LoggerController.class);

    @RequestMapping("/printlog")
    public String logger() {
        logger.error("error....");
        logger.warn("warn....");
        logger.info("info...");
        logger.debug("debug...");
        logger.trace("trace...");
        return "打印日志级别";
    }
}

这里的打印结果通常只包含 error、warn、info。这是因为日志的输出级别默认是 INFO,所以只会打印大于等于 INFO 的级别。

日志级别的配置

可以通过配置文件调整日志级别。

YAML 配置

logging:
  level:
    root: debug

Properties 配置

logging.level.root=debug

调整后,控制台将显示更详细的调试信息。

日志持久化

什么是日志持久化?

日志持久化是指将程序运行过程中产生的日志数据,从内存写入到磁盘等持久化存储介质的过程,核心目的是防止日志因系统崩溃、断电等意外丢失。

日志持久化的配置

YAML 配置

logging:
  file:
    name: logger/log.log

Properties 配置

logging.file.name=logger/log.log

路径后面可以跟绝对路径也可以是相对路径。运行后,日志会保存在对应的目录中。

配置日志文件的滚动策略

为了避免日志文件无限增长,我们可以配置滚动策略。

YAML 配置

logging:
  logback:
    rollingpolicy:
      max-file-size: 1KB
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

Properties 配置

logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}.%i
logging.logback.rollingpolicy.max-file-size=1KB

这样设置后,日志文件会根据大小和日期进行滚动归档。

更简单的日志输出

添加依赖

引入 Lombok 依赖以简化代码。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

@Slf4j 注解

使用 @Slf4j 注解后,无需手动定义 Logger 实例,直接调用 log 对象即可。

@Slf4j
public class LoggerController2 {
    public String logger() {
        log.info("info....");
        return "打印日志";
    }
}

这样就不用写那一长句初始化代码了,但要确保使用的是 log 而不是 logger。

目录

  1. Spring Boot 日志实战:级别、持久化与 SLF4J 配置指南
  2. 核心作用
  3. 日志的级别分类
  4. 日志级别的使用
  5. 日志级别的配置
  6. 日志持久化
  7. 什么是日志持久化?
  8. 日志持久化的配置
  9. 配置日志文件的滚动策略
  10. 更简单的日志输出
  11. 添加依赖
  12. @Slf4j 注解

更多推荐文章

查看全部
  • 宇树 G1 机器人开发入门:有线与无线连接配置指南
  • YOLOFuse 环境修复:解决 python 命令缺失的软链接方案
  • VibeVoice Pro 多终端 WebSocket 接入实战:Web/Android/iOS
  • Java 异常处理:从原理到实战最佳实践
  • FastAPI:基于类型提示的高性能 Python Web 框架
  • 算法优选:位运算实战技巧
  • 30+ 大语言模型(LLM)面试问题及答案详解
  • Python import 导入机制详解
  • 大模型核心面试题与 Transformer 原理详解
  • 基于 AI 辅助的在线图书借阅平台设计与实现
  • 开源 AI 网络爬虫 Crawl4AI:智能数据抓取实战
  • Linux 系统下 C/C++ 调试器 gdb/cgdb 实战指南
  • YOLO 无人机目标检测实战:7261 张数据集与 QT 可视化界面实现
  • VS Code 远程连接服务器后 GitHub Copilot 无法使用及修复方案
  • OpenClaw 开源 AI Agent 框架核心解析与上手指南
  • StableDiffusion 使用 LoRA 生成高质量人物图片实操教程
  • Buzz 离线语音转文字工具安装与使用指南
  • Topaz Photo AI v1.3.3 汉化便携版:图片降噪与无损放大工具
  • GitHub Copilot Workspace 100 万 Token 上下文评测
  • 每周学习总结:健康、文档搭建与算法练习

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online