@slf4j 自动生成 static final log 字段,类型为 org.slf4j.logger,名称固定为 log,等效于 loggerfactory.getlogger(yourclassname.class),需同时引入 lombok 和 slf4j 实现(如 logback-classic)。

在 Java 中使用 Lombok 的 @Slf4j 注解,可以自动为你生成一个名为 log 的 SLF4J 日志对象,省去手动声明和初始化的样板代码。
添加依赖是前提
确保项目中已引入 Lombok 和 SLF4J 实现(如 logback-classic):
- Maven 中添加 Lombok 依赖(编译期注解处理器)
- 同时必须有 SLF4J API + 具体实现(例如
ch.qos.logback:logback-classic),否则运行时会报NoClassDefFoundError或找不到 logger
@Slf4j 自动生成 log 字段
在类上加 @Slf4j,Lombok 会在编译后插入如下等效代码:
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(YourClassName.class);
你就可以直接用 log.info("xxx")、log.error("xxx", e) 等方式记录日志,无需手写声明或构造逻辑。
注意命名与作用域
@Slf4j 默认生成的字段名是 log,不可更改;它是一个 static final 字段,属于类级别,所有实例共享同一个 logger 实例。这是 SLF4J 的推荐用法,也是性能最优的方式。
常见搭配建议
- 配合 Lombok 的
@Data、@AllArgsConstructor等一起使用,进一步减少模板代码 - 避免在工具类或静态方法中误用非静态日志调用(
@Slf4j生成的是 static 字段,所以没问题) - 如果需要自定义 logger 名称(比如按模块分组),可用
@Log4j2或@CustomLog(需自定义注解),但@Slf4j不支持
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











