1. 概述
Lombok是一个编译阶段工具,可以在编译类时,为类添加属性、方法等,通过添加注解来消除模板代码,以简化 Java 代码的编写过程,支持自动生成 getter、setter、toString等方法,减少了重复性的开发工作,提高开发效率;
Lombok提供了强大的日志功能,来控制项目开发中日志的级别控制;
2. 安装和配置Lombok
- 第1步:idea中安装lombok插件
-
第2步:项目pom文件中添加依赖[创建工程时可勾选]
<!--引入Lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
3. 消除模板代码
Lombok
提供了许多注解,每个注解用来生成特定的代码块。下面是一些常用的注解:
3.1. @Getter
和 @Setter
用来生成 getter 和 setter 方法。
@Getter
@Setter
public class Student {
private String name;
private int age;
}
这将自动生成 getName()
, setName()
, getAge()
, setAge()
方法。
3.2. @ToString
用来生成 toString
方法。
@ToString
public class Student {
private String name;
private int age;
}
这将自动生成 toString()
方法。
3.3. @AllArgsConstructor
和 @NoArgsConstructor
用来生成带参数的和无参的构造函数。
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private String name;
private int age;
}
这将自动生成一个有参构造函数和一个无参构造函数。
3.4. @Data
是一个组合的注解,它等价于同时使用了 @Getter
、@Setter
、@ToString
、@``NoArgsConstructor
、@``EqualsAndHashCode
注解。
@Data
public class Student {
private String name;
private int age;
}
4. 日志功能
4.1. @Slf4j日志注解
@Slf4j
是 lombok
中的日志注解;此注解描述类时会在类中创建一个日志对象,基于日志对象可以输出一些日志。
使用方法
在需要使用日志的类上加上 @Slf4j
注解即可。
log.debug("日志信息")
-
log.info``("日志信息")
使用示例
@Slf4j
public class MyClass{
public void myMethod(){
log.debug("myMethod方法被执行");
}
}
在上述代码中,
@Slf4j
注解被加在了MyClass
类上。这样就可以在MyClass
中直接使用log
对象输出日志了。
4.2. 日志级别
设置了某个日志级别,则会显示该日志级别和比该级别严重的日志级别;
日志级别:TRACE < DEBUG < INFO < WARN < ERROR
TRACE
:追踪级别
用于跟踪代码执行的详细信息。通常用于调试阶段,用于输出一些详细的调试信息,对性能影响较大;-
DEBUG
:调试级别用于输出调试信息,帮助开发人员诊断问题。通常用于开发和测试阶段,例如输出方法的输入参数和返回值;
-
INFO
(默认的级别):普通信息级别用于输出程序的一般运行信息。通常用于生产环境,记录程序运行的关键信息,如系统启动、关键操作完成等;
-
WARN
:警告级别用于输出警告信息。通常用于发现一些可能的问题或不正常的情况,但不会影响程序的正常运行;
-
ERROR
:错误级别用于输出错误信息。通常用于记录程序的错误信息、异常信息,表示程序出现了严重的问题,无法正常运行
注意:在 @Slf4j
注解中,应根据不同的应用场景和需求,可以选择适当的日志级别。
在开发和测试阶段,可以将日志级别设置为****DEBUG
****,以便获取详细的调试信息。
而在生产环境中,一般将日志级别设置为****INFO
****或更高级别。
4.3. 设置日志级别
@Slf4j
注解默认的日志级别为 INFO
,即只会输出 INFO
级别 以及 比INFO
日志级别更高级别的日志信息,如需配置则需要在配置文件 application.properties
配置文件中进行配置;
# 设置日志级别为WARN
logging.level.root=WARN
# 将cn.tedu包及其包中的所有类的日志级别设置为DEBUG级别
logging.level.cn.tedu._02notice=DEBUG
-
通知管理日志优化
-
第1步: 配置文件
application.properties
中设置日志级别logging.level.root=warn logging.level.cn.tedu._02notice=debug
-
第2步:
Controller
类上添加@Slf4j
日志注解@Slf4j @Controller public class NoticeController {}
-
第3步:
Controller
方法中打印日志/** * 1.新增公告功能 */ @ResponseBody @RequestMapping("/v1/notice/add") public JsonResult addNotice(NoticeAddParam noticeAddParam){ log.debug("noticeAddParam = " + noticeAddParam); NoticePO noticePO = new NoticePO(); BeanUtils.copyProperties(noticeAddParam, noticePO); noticePO.setUserId(1L); noticePO.setCreateTime(new Date()); noticePO.setUpdateTime(new Date()); noticeMapper.insert(noticePO); return JsonResult.ok(); }