当前位置: 首页 > news >正文

Spring Boot 使用 SLF4J 实现控制台输出与分类日志文件管理

概述

在日常的 Java 项目开发中,日志是最重要的调试与排查手段之一。为了便于开发时实时查看,同时在生产中追踪问题,我们通常希望实现以下日志管理目标:

  • ✅ 控制台实时输出日志,方便开发调试
  • ✅ 日志根据级别分类保存,例如:info.logwarn.logerror.log
  • ✅ 日志文件按日期滚动保存,防止文件过大
  • ✅ 日志保存在 logs/ 文件夹中,项目内统一管理

在本文中,我们将使用 Spring Boot + SLF4J + Logback 组合,完成这一目标。

为什么选择 SLF4J + Logback?

SLF4J 是一个日志“门面”,可以灵活对接多种日志实现,如 Logback、Log4j、Log4j2。

Logback 是 Spring Boot 默认日志实现,功能强大、性能优越。

实战

假设现在有一个项目,项目的结构如下:

配置 application.yaml

# 日志配置
logging:# 读取日志配置文件,即 resources 文件夹下的配置文件config: classpath:log4j2.xmllevel:# 默认整个项目的日志级别root: info# 如果你想细化项目日志级别,com.cbf下的日志级别是info# com.cbf: info

添加日志配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 日志存放路径(当前项目的 logs 文件夹) --><property name="log.path" value="./logs"/><!-- 日志输出格式 --><property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><!-- INFO 级别日志输出 --><appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 按天滚动 --><fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 保留60天历史 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- ERROR 级别日志输出 --><appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 根日志记录器:所有未指定 logger 的日志都会走这里 --><root level="info"><!-- 输出到控制台。 --><appender-ref ref="console"/><!-- 输出到 sys-info.log 文件(只记录 INFO 级别)。--><appender-ref ref="file_info"/><!-- 输出到 sys-error.log 文件(只记录 ERROR 级别)。 --><appender-ref ref="file_error"/></root>
</configuration>

效果检验

项目启动后,

  • 控制台将输出全部日志内容。
  • 项目根目录会生成 logs/ 文件夹。
  • 根据不同级别,日志被写入:
  • sys-info.log:包含 INFO 及以上所有级别
  • sys-error.log:只包含 ERROR 级别日志
  • 日志每天自动生成新文件,如:all.2025-06-05.log

输出效果如下:

相关文章:

  • ES 学习总结一 基础内容
  • Bug问题
  • qt ui 转python
  • 导航路径优化(一)——平滑
  • PX4 | 无人机关闭磁力计罗盘飞行(yaw estimate error报错解决方法)
  • Vue事件总线
  • windows命令行面板升级Git版本
  • 面试总结一
  • 【HarmonyOS 5】 社交行业详解以及 开发案例
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
  • 第二章支线八 ·CSS终式:Tailwind与原子风暴
  • 一个基于Java的简单抢单功能实现示例,模拟多线程环境下的并发抢单场景
  • c#基础010(程序结构)
  • JavaSec-XSS
  • Mysql 身份认证绕过漏洞 CVE-2012-2122
  • OpenResty 安装指南
  • DNS攻击类型有哪些?如何应对DNS攻击威胁?
  • 12.MySQL视图特性
  • 高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
  • 无法下载CUDA,下载界面链接打开异常
  • 宁波汽车网站建设/接广告的平台
  • adobe 网站制作软件有哪些/谷歌竞价广告
  • 屏边县住房和城乡建设局网站/百度广告公司
  • 网站开发公司市场/疫情最严重的三个省
  • b2b免费信息发布网站/seo快排优化
  • 保定网站建设/百度平台商家我的订单查询