Lombok @Log 系列注解: 简化日志记录
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观
Lombok 提供了一系列 @Log
注解,用于自动生成日志记录器实例,简化 Java 类中日志的定义和使用。这些注解支持常见的日志框架,比如 java.util.logging
、Log4j
、Log4j2
、Slf4j
等。通过 @Log
注解,开发者不再需要手动定义 Logger 实例,代码更简洁,同时符合实际需求的日志框架。
可用的 @Log
注解
Lombok 支持多个日志框架,每个框架对应一个专门的注解:
@Log
:使用java.util.logging
(JUL);@CommonsLog
:使用 Apache Commons Logging;@Log4j
:使用 Log4j;@Log4j2
:使用 Log4j2;@Slf4j
:使用 SLF4J;@XSlf4j
:使用 SLF4J 的扩展(XSLF4J);@JBossLog
:使用 JBoss Logging;
每个注解都会自动在类中生成一个静态的日志记录器实例,变量名称根据框架的不同,通常是 log
。
基本用法示例
以下示例展示了使用不同日志注解的代码示例和日志输出方式:
使用 @Slf4j
示例
@Slf4j
是使用最广泛的注解之一,它基于 SLF4J 日志框架。通过 @Slf4j
注解,Lombok 会自动生成一个 log
变量。
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ExampleService {
public void performTask() {
log.info("信息级别日志.");
log.warn("警告级别日志.");
log.error("错误级别日志.");
}
}
在上面的代码中,log
对象是由 Lombok 自动生成的 Logger
实例,开发者可以直接调用 info
、warn
、error
等方法输出日志。
使用 @Log4j2
示例
如果项目使用 Log4j2 作为日志框架,可以使用 @Log4j2
注解。Lombok 会自动生成一个 Log4j2 的 Logger
实例:
import lombok.extern.log4j.Log4j2;
@Log4j2
public class ExampleService {
public void performTask() {
log.info("Performing task with Log4j2.");
log.debug("Debugging information.");
}
}
log
变量是自动生成的 Log4j2 Logger
实例,可以使用所有的 Log4j2 日志级别方法。
使用 @Log
示例
@Log
注解使用 Java 内置的 java.util.logging
(JUL) 日志框架,对于不需要第三方日志库的轻量级应用非常适合。
import lombok.extern.java.Log;
@Log
public class ExampleService {
public void performTask() {
log.info("Using java.util.logging for task.");
log.warning("This is a warning message.");
}
}
在这里,log
变量是 java.util.logging.Logger
实例,可以直接调用 JUL 的日志方法。
@Log
注解生成的日志对象
每个日志注解生成的 Logger
变量都具备以下特性:
- 静态和只读:日志记录器实例是
static final
类型,确保整个类只会生成一个日志记录器实例。 - 命名为
log
:生成的变量名称统一为log
,便于开发者识别和调用。 - 支持日志级别:根据日志框架的不同,
log
变量支持相应的日志级别方法(如info
、warn
、error
等)。
小结
Lombok 的 @Log
注解系列为 Java 类的日志记录提供了便捷的方式,无需手动定义日志记录器对象。根据不同的日志框架,选择相应的 @Log
注解:
@Slf4j
和@Log4j2
是使用最广泛的注解,适合现代 Java 项目。@Log
适合需要轻量级日志记录的项目,直接使用java.util.logging
。
这些注解帮助开发者减少样板代码,提升日志管理的可维护性。