Logback 系列(2):日志门面与实现 SLF4J + Logback
2026/7/19 3:14:16 网站建设 项目流程

本系列第 2 篇。搞懂一个初学者最容易懵的问题:为什么代码里import org.slf4j.Logger,配置的却是 Logback?

门面 vs 实现

  • SLF4J:门面(接口/规范)。你的代码只依赖它,不绑定具体实现。
  • Logback:实现(干活的)。真正决定日志打到哪、长什么样。

这是典型的“面向接口编程”。好处是:哪天想把 Logback 换成 log4j2,业务代码一行不用改,只换依赖和配置。

标准用法

importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassOrderService{privatestaticfinalLoggerlog=LoggerFactory.getLogger(OrderService.class);publicvoidcreate(){log.info("订单创建成功, id={}",123);// 用 {} 占位符,别用字符串拼接}}

实际项目里更常用 Lombok 的@Slf4j注解,自动帮你生成上面那行log字段,少写样板代码。

为什么用{}占位符而不是+拼接

log.debug("x="+obj);// ❌ 即使 debug 没开,字符串也已经拼好了(浪费)log.debug("x={}",obj);// ✅ 只有真要打印时才拼接

在高频日志或大对象场景下,这个差异对性能影响明显。养成用占位符的习惯。


上一篇:为什么是 Logback
下一篇:三大核心组件 Logger / Appender / Encoder

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询