SLF4J的学习路线

张开发
2026/4/17 13:27:38 15 分钟阅读

分享文章

SLF4J的学习路线
SLF4J是 Java 生态里一个日志组件先搞懂“它不是日志框架而是日志门面”1. 先打基础先搞懂它到底是什么这一阶段目标只有一个分清楚这几个角色SLF4J日志接口 / 门面Logback / Log4j2真正输出日志的实现你的业务代码只调用 SLF4J API你先要建立这个认知业务代码 - SLF4J API - 日志实现(Logback / Log4j2)这一层如果不清楚后面一堆依赖冲突、日志不输出、多个 binding 警告你都会觉得很玄学。这一阶段你应该会回答这些问题为什么需要日志门面为什么不直接写死 Log4jSLF4J 和 Logback 是什么关系“API”和“实现”分别指什么2. 入门使用会写最基本的日志代码这一阶段开始动手先别碰复杂配置先会用。你需要会这些内容2.1 创建 Logger最基本写法importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassDemo{privatestaticfinalLoggerlogLoggerFactory.getLogger(Demo.class);publicstaticvoidmain(String[]args){log.info(程序启动);log.warn(这是警告);log.error(这是错误);}}2.2 理解常见日志级别按常见重要性理解就行trace非常细的跟踪信息debug调试信息info正常运行信息warn警告但程序还能跑error错误功能可能失败你需要知道开发环境常开debug生产环境通常以info或warn为主2.3 学会参数化日志这个很重要属于 SLF4J 的高频写法log.info(用户 {} 登录成功IP{},username,ip);而不是log.info(用户 username 登录成功IPip);原因是参数化写法可读性更好性能更好是 SLF4J 推荐方式这一阶段练熟后你基本就“会用 SLF4J”了。3. 进阶理解搞懂依赖关系和配置方式这一阶段是从“会写”进化到“会排查问题”。3.1 学会看依赖结构你要理解项目里通常会有两类依赖API 依赖slf4j-api实现依赖例如logback-classic你最终需要形成一个习惯代码只面向 slf4j-api运行时只保留一个日志实现。3.2 理解“只能有一个实现”很多初学者最容易踩的坑项目里同时出现logbacklog4jslf4j-simple然后控制台报Class path contains multiple SLF4J bindings你要学会判断当前项目到底用了哪个实现哪个依赖是多余的谁是传递依赖带进来的如果你会 Maven/Gradle这一块要顺手学会Maven:dependency:treeGradle:dependencies这是 Java 项目里非常实用的能力。3.3 学配置文件但先学 Logback因为 SLF4J 本身不负责输出所以配置通常是配Logback或Log4j2。建议学习顺序先从Logback开始因为它和 SLF4J 关系最紧。先学最常见配置项root 日志级别指定包的日志级别控制台输出文件输出日志格式 pattern比如你要知道这些问题怎么解决为什么 debug 没出来为什么某个包日志太多为什么日志没写入文件为什么输出格式很乱4. 项目实战把 SLF4J 真正用进业务里这一阶段才是“学会”。4.1 在 Spring Boot 项目里用如果你做 Java 后端最典型场景就是 Spring Boot。Spring Boot 默认就会把日志体系整好通常是代码写 SLF4J底层默认是 Logback你要学会在 Controller / Service / Repository 里正确打日志区分业务日志、错误日志、调试日志不要乱打日志4.2 学会“日志该记什么不该记什么”这是工程能力不只是语法。应该记录关键业务节点外部调用结果异常上下文重要参数适度不该记录密码token身份证号银行卡号过多无意义日志很多人不是不会用日志是不会“设计日志”。4.3 学异常日志的正确写法比如try{intx1/0;}catch(Exceptione){log.error(计算失败,e);}而不是只写log.error(计算失败: {},e.getMessage());因为直接传异常对象才能保留完整堆栈。4.4 学会按场景打日志比如接口入口log.info(收到创建订单请求userId{}, orderId{},userId,orderId);核心流程log.debug(开始调用支付服务orderId{},orderId);失败场景log.error(支付失败orderId{},orderId,e);这种“流程化日志思维”比记概念更重要。推荐学习顺序我建议你按这个顺序走第一周只学概念 基本 APISLF4J 是什么日志门面是什么Logger / LoggerFactory5 个常见日志级别参数化日志第二周学运行机制slf4j-api 和 logback-classic 的关系为什么需要绑定为什么只能有一个实现多个 binding 冲突怎么排查第三周学配置logback.xml控制台输出文件输出日志级别控制包级别日志管理第四周项目实战在 Spring Boot 中规范打日志异常日志接口日志敏感信息脱敏日志排错

更多文章