@slf4j可自动生成slf4j风格的log字段,需同时引入lombok依赖和slf4j实现(如logback),支持自定义logname,默认生成private static final logger log = loggerfactory.getlogger(类名.class)。

在 Java 中用 Lombok 的 @Slf4j 注解,能自动为你生成一个 SLF4J 风格的 logger 字段,省去手动声明和初始化的样板代码。
前提:确保项目已集成 Lombok 和 SLF4J 实现
必须满足两个条件才能正常使用 @Slf4j:
- 项目中已添加 Lombok 依赖(Maven 示例):
org.projectlombok
lombok
true - SLF4J 的具体实现(如 Logback、Log4j2)已在 classpath 中,例如 Logback:
ch.qos.logback
logback-classic
使用 @Slf4j 注解(最简方式)
在类上直接加 @Slf4j,Lombok 会在编译期生成一个名为 log 的静态 logger 字段:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
@Slf4j
public class UserService {
public void createUser(String name) {
log.info("Creating user: {}", name);
log.debug("Debug info for {}", name);
log.error("Failed to create user", new RuntimeException("mock error"));
}
}
等价于手动写:
private static final Logger log = LoggerFactory.getLogger(UserService.class);
自定义 logger 名称(可选)
默认 logger 名为 log。若想改名(比如避免与已有字段冲突),可用 @Slf4j(logName = "logger"):
@Slf4j(logName = "logger")
public class OrderService {
public void process() {
logger.info("Order processed");
}
}
注意事项和常见问题
- Lombok 生成的是
org.slf4j.Logger,不是 Log4j 或 JUL 的原生 logger - IDE 需安装 Lombok 插件(如 IntelliJ 的 Lombok plugin),否则可能报“cannot resolve symbol log”
- Maven/Gradle 构建时要启用 annotation processing(现代版本通常默认开启)
- 不支持在接口或枚举上使用
@Slf4j(Lombok 不生成静态字段到接口中)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










