SpringBoot日志持久化以及使用lombok输出日志

上一篇文章介绍了日志级别和自定义输出日志 链接https://blog.csdn.net/qq_45875349/article/details/132510387?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132510387%22%2C%22source%22%3A%22qq_45875349%22%7D那么想要将控制台上的日志信息,保存在硬盘上,以便出问题之后追溯问题该怎么办呢?这个把日志保存下来的过程就是日志持久化。

1 日志持久化

想要实现日志的持久化也很简单只需要在配置文件中指定日治的存储目录或者是指定日志保存的文件名,springboot就会将控制台的日志写入到相应的目录或者文件中。

配置日志文件的保存路径(此时日志名称就是默认是spring.log):

# 设置⽇志⽂件的⽬录
logging.file.path: F:\\project_java\\log

SpringBoot日志持久化以及使用lombok输出日志_第1张图片

 或者直接把名称也给定,此时日志名称就是我们自定义的名称

# 设置⽇志⽂件的⽂件名
logging.file.name: F:\\project_java\\log\\spring-0826.log

SpringBoot日志持久化以及使用lombok输出日志_第2张图片

 2 使用lombok输出日志

每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,也很麻烦,这⾥讲⼀种更好⽤的⽇志输出⽅式,使⽤ lombok 来更简单的输出。
SpringBoot日志持久化以及使用lombok输出日志_第3张图片
  • 1. 添加 lombok 框架⽀持。
  • 2. 使⽤ @slf4j 注解输出⽇志

2.1 添加lombok依赖

如果在建立spring项目的时候没有选择加入lombok依赖那么我们需要手动的添加lombok依赖:


     org.projectlombok
     lombok
     true

2.2 使用lombok输出日志

import com.example.mybatis_demo.entity.UserEntity;
import com.example.mybatis_demo.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;


@RestController
@RequestMapping("user")
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("getall")
    public List getAll() {
        log.error("======使用lombok打印日志=========");
        return userService.getAll();
    }
}
注意:使⽤ @Slf4j 注解,在程序中使⽤ log 对象即可输⼊⽇志, 并且只能使⽤ log 对象才能输出,这是 lombok 提供的对象名

2.3 lombok原理

lombok 能够打印⽇志的“秘密”就在 target ⽬录⾥⾯,target 为项⽬最终执⾏的代码,查看 target ⽬录如下:
SpringBoot日志持久化以及使用lombok输出日志_第4张图片

也就是说我们在使用@Slf4j的注解后,lombok自动将注解转换成代码,减轻了开发者简单繁琐的工作。

Java程序的运行原理:

SpringBoot日志持久化以及使用lombok输出日志_第5张图片

 Lombok 的作⽤如下图所示:

SpringBoot日志持久化以及使用lombok输出日志_第6张图片

2.4 lombok更多注解说明

  1. @Getter / @Setter: 自动生成字段的getter和setter方法。

  2. @NoArgsConstructor: 自动生成无参构造函数。

  3. @AllArgsConstructor: 自动生成包含所有字段的构造函数。

  4. @RequiredArgsConstructor: 自动生成带有被@NonNull注解标记的字段的构造函数。

  5. @ToString: 自动生成toString()方法,可以自定义包含的字段列表。

  6. @EqualsAndHashCode: 自动生成equals()hashCode()方法,可以自定义包含的字段列表。

  7. @Data: 一个组合注解,等同于@Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor的合集。

  8. @Builder: 自动生成一个构建器模式的构造函数,用于创建对象实例。

  9. @Slf4j: 自动生成一个私有的log字段,以方便在类中使用日志。

  10. @NonNull: 标记一个字段,表示该字段不能为null,会在构造函数中进行非空检查。

  11. @Value: 类似于@Data,但生成的类会是不可变(immutable)的,适用于值对象。

  12. @NoArgsConstructor(access = AccessLevel.PROTECTED): 生成一个受保护的无参构造函数,用于继承关系中。

  13. @Cleanup: 可以自动关闭资源,如输入/输出流,在代码块结束时。

  14. @Synchronized: 生成同步锁,可以将方法声明为同步的。

  15. @AllArgsConstructor(staticName = "of"): 自动生成一个包含所有字段的构造函数,并添加一个静态工厂方法of来创建对象。

你可能感兴趣的:(Spring,spring,boot,java,后端)