Lombok中的Slf4j

144 阅读1分钟

 Lombok中含有自己封装的日志功能,导入依赖后,在需要使用的类上加入@Slf4j即可在代码中使用log对象来打印日志,方便后期的调试。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
</dependency>

举个例子:

 在系统中用户注册时,传入AuthUserDTO实体,通过日志来显示其各个属性内容。在捕获到异常后,使用日志来打印错误信息。

@RequestMapping("register")
public Result register(@RequestBody AuthUserDTO authUserDTO) {
    try {
        if (log.isInfoEnabled()) {
            log.info("UserController.register.dto:{}", JSON.toJSONString(authUserDTO));
        }
        checkUserInfo(authUserDTO);
        AuthUserBO authUserBO = AuthUserDTOConvert.INSTANCE.
                convertDtoToBo(authUserDTO);
        return Result.ok(authUserDomainService.register(authUserBO));
    } catch (Exception e) {
        log.error("UserController.register.error:{}", e.getMessage(), e);
        return Result.fail("注册用户失败");
    }
}

 在这里log.info()之前加入判断是因为,在打印之前,使用JSON对实体进行了序列化。在高并发的情况下,如果实体出现问题,就会浪费过多的资源。所以在打印之前,进行日志级别的判断,这就不会在出错的时候去序列化实体。