Logback 系列(2):日志门面与实现 SLF4J + Logback

📅 2026/7/19 3:14:18
Logback 系列(2):日志门面与实现 SLF4J + Logback
本系列第 2 篇。搞懂一个初学者最容易懵的问题为什么代码里import org.slf4j.Logger配置的却是 Logback门面 vs 实现SLF4J门面接口/规范。你的代码只依赖它不绑定具体实现。Logback实现干活的。真正决定日志打到哪、长什么样。这是典型的“面向接口编程”。好处是哪天想把 Logback 换成 log4j2业务代码一行不用改只换依赖和配置。标准用法importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassOrderService{privatestaticfinalLoggerlogLoggerFactory.getLogger(OrderService.class);publicvoidcreate(){log.info(订单创建成功, id{},123);// 用 {} 占位符别用字符串拼接}}实际项目里更常用 Lombok 的Slf4j注解自动帮你生成上面那行log字段少写样板代码。为什么用{}占位符而不是拼接log.debug(xobj);// ❌ 即使 debug 没开字符串也已经拼好了浪费log.debug(x{},obj);// ✅ 只有真要打印时才拼接在高频日志或大对象场景下这个差异对性能影响明显。养成用占位符的习惯。上一篇为什么是 Logback下一篇三大核心组件 Logger / Appender / Encoder