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

这篇具有很好参考价值的文章主要介绍了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输出日志,Spring,spring boot,java,后端

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

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

SpringBoot日志持久化以及使用lombok输出日志,Spring,spring boot,java,后端

 2 使用lombok输出日志

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

2.1 添加lombok依赖

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

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
</dependency>

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<UserEntity> getAll() {
        log.error("======使用lombok打印日志=========");
        return userService.getAll();
    }
}
注意:使⽤ @Slf4j 注解,在程序中使⽤ log 对象即可输⼊⽇志, 并且只能使⽤ log 对象才能输出,这是 lombok 提供的对象名

SpringBoot日志持久化以及使用lombok输出日志,Spring,spring boot,java,后端

2.3 lombok原理

lombok 能够打印⽇志的“秘密”就在 target ⽬录⾥⾯,target 为项⽬最终执⾏的代码,查看 target ⽬录如下:
SpringBoot日志持久化以及使用lombok输出日志,Spring,spring boot,java,后端

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

Java程序的运行原理:

SpringBoot日志持久化以及使用lombok输出日志,Spring,spring boot,java,后端

 Lombok 的作⽤如下图所示:

SpringBoot日志持久化以及使用lombok输出日志,Spring,spring boot,java,后端

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来创建对象。文章来源地址https://www.toymoban.com/news/detail-675284.html

到了这里,关于SpringBoot日志持久化以及使用lombok输出日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里 P7 三面凉凉,kafka Borker 日志持久化没答上来

    👏作者简介:大家好,我是爱敲代码的小黄,阿里巴巴淘天Java开发工程师,CSDN博客专家 📕系列专栏:Spring源码、Netty源码、Kafka源码、JUC源码、dubbo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2023计划中:以梦为马,扬帆

    2024年02月04日
    浏览(53)
  • 链路追踪SkyWalking整合项目以及数据持久化

    1.1 通过jar包方式整合 首先我们将一个简单的springboot服务打成jar包。 将其上传到Linux服务器中。 准备一个启动脚本,脚本内容如下: 等同于 参数名对应agent/config/agent.config配置文件中的属性。属性对应的源码: org.apache.skywalking.apm.agent.core.conf.Config.java 1.2 docker方式安装以及集

    2024年02月10日
    浏览(42)
  • 2023-06-07:Redis 持久化方式有哪些?以及有什么区别?

    2023-06-07:Redis 持久化方式有哪些?以及有什么区别? 答案2023-06-07: Redis提供了两种持久化机制:RDB和AOF。 RDB持久化是将Redis当前进程中的数据生成快照并保存到硬盘的过程。快照指的是Redis在某一时刻的内存状态的记录,类似于拍照一样把数据保存下来,因此也被称为Redi

    2024年02月08日
    浏览(53)
  • SpringBoot-RabbitMQ06-持久化和ACK确认机制

    1.什么是消息确认ACK? 如果在处理消息的过程中,消费者的服务器在处理消息时出现异常,那么可能这条正在处理的消息刘没有完成消息消费,数据就会丢失,为了确保数据不会丢失RabbitMQ支持消息确认-ACK 2.ACK的消息确认机制 ACK机制是消费者从RabbitMQ收到消息并处理完成后,反

    2024年04月15日
    浏览(36)
  • Quartz---Springboot项目整合Quartz---实现内存、数据库持久化

    1.SpringBoot整合Quartz使用内存持久化 1.1.什么是内存持久化 Quartz的内存持久化是指Quartz框架在默认情况下将任务调度的运行信息保存在内存中。这种方式的优点是可以提供最佳的性能,因为内存中数据访问最快。然而,内存持久化的缺点是缺乏数据的持久性。当程序停止或系统

    2024年02月21日
    浏览(48)
  • yapi容器化docker部署以及mongodb容器的持久化挂载异常问题

    通过docker形式部署yapi,需要准备一个mongodb,然后直接在一个空文件夹里写好Dockerfile,其中通过wget下载yapi的zip包。 基本按照这篇文章:https://www.modb.pro/db/149666 来处理即可 把mongodb的docker 跑起来, --auth 表示需要密码才能访问 注意 原文中启动mongo的容器是这样的 首先创建Mon

    2024年02月14日
    浏览(54)
  • [Kubernetes]5. k8s集群StatefulSet详解,以及数据持久化(SC PV PVC)

    前面通过 deployment 结合 service 来部署 无状态的应用 ,下面来讲解通过 satefulSet 结合 service 来部署 有状态的应用 无状态: 无状态 (stateless) 、牲畜 (cattle) 、无名 (nameless) 、可丢弃 (disposable) 有状态: 有状态 (stateful) 、宠物 (pet) 、具有名 (haviing name) 、不可丢弃 (non-disposable) St

    2024年02月01日
    浏览(43)
  • 【pinia持久化存储】使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储

    使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储。 存储方式 : localStorage sessionStorage pinia-plugin-persistedstate 中文官网 pinia 中文官网 安装和使用 pinia ,请参考使用pinia文章。 安装 pinia-plugin-persistedstate : 使用前先将 pinia-plugin-persistedstate添加到pinia实例上。 在添加的时

    2023年04月17日
    浏览(46)
  • ActiveMQ使用JDBC持久化消息

    为了避免服务器宕机而导致消息丢失,ActiveMQ提供消息持久化机制。 ActiveMQ提供多种消息持久化的方式,如LevelDB Store、KahaDB 、AMQ、JDBC等,详情可以访问官网。 ActiveMQ默认是使用KahaDB持久化消息。在/conf/activemq.xml如下配置: KahaDB是一个文件型数据库,是以日志形式保存到文件

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包