@Slf4j注解可为Java类自动生成SLF4J Logger静态字段log,简化日志代码;需引入slf4j-api及实现、lombok依赖,IDE启用注解处理;支持自定义logName,仅适用于类,不兼容其他日志框架。

在 Java 中使用 Lombok 的 @Slf4j 注解,可以快速为类注入一个 SLF4J 日志对象(通常是 org.slf4j.Logger 类型的静态字段),无需手动声明和初始化,大幅简化日志代码。
前提条件:添加依赖和启用 Lombok
确保项目已正确配置:
- 引入 SLF4J API(如
slf4j-api)及具体实现(如logback-classic或slf4j-simple) - 添加 Lombok 依赖(Maven 示例):
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> - IDE 需安装 Lombok 插件,并开启注解处理(如 IntelliJ 中勾选 Enable annotation processing)
基本用法:在类上加 @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("User name length: {}", name.length());
log.error("Failed to create user", new RuntimeException("Duplicate name"));
}
}
等价于手动写:
立即学习“Java免费学习笔记(深入)”;
<pre class="brush:php;toolbar:false;">private static final Logger log = LoggerFactory.getLogger(UserService.class);
自定义 logger 名称(可选)
默认 logger 名为 log。如需改名,可用 <code>@Slf4j(logName = "logger"),生成字段为 private static final Logger logger = ...。
注意事项与常见问题
- 仅支持 SLF4J:@Slf4j 专为 SLF4J 设计,不兼容 Log4j、JUL 等其他日志框架
- 不能用于接口或枚举:只能标注在普通类或抽象类上
-
避免重复声明:若类中已存在名为
log的字段,Lombok 将报错(可通过@Cleanup或重命名规避) - 日志级别要合理:debug/info/warn/error 的使用需符合实际场景,生产环境通常关闭 debug 日志

















