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

news2024/9/29 1:25:33

上一篇文章介绍了日志级别和自定义输出日志 链接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

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

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

 2 使用lombok输出日志

每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,也很麻烦,这⾥讲⼀种更好⽤的⽇志输出⽅式,使⽤ lombok 来更简单的输出。
  • 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 提供的对象名

2.3 lombok原理

lombok 能够打印⽇志的“秘密”就在 target ⽬录⾥⾯,target 为项⽬最终执⾏的代码,查看 target ⽬录如下:

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

Java程序的运行原理:

 Lombok 的作⽤如下图所示:

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来创建对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/933654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

react解决死循环方法?

使用useeffect&#xff08;副作用&#xff09;方法结束这个操作 1、导入useeffect、useState 2、把下方代码写入&#xff1a;里面填写的是你要终止某个东西的代码 注意&#xff1a;不可不写&#xff0c;也可以写依赖或不写

springboot整合第三方技术邮件系统

springboot整合第三方技术邮件系统&#xff0c;发邮件是java程序的基本操作&#xff0c;springboot整合javamail其实就是简化开发。不熟悉邮件的小伙伴可以先学习完javamail的基础操作&#xff0c;再来看这一部分内容才能感触到springboot整合javamail究竟简化了哪些操作。简化…

使用锐捷RG-EG210G-E路由器实现两个IP地址冲突的局域网互通

需求背景&#xff1a; 之前写过一篇博文使用路由器实现三个不同网段局域网内的计算机相互访问&#xff0c;链接如下 https://blog.csdn.net/agang1986/article/details/131862160 当前的需求又发生了变更&#xff0c;有两个独立的局域网&#xff0c;内部的计算机个数和配置的IP…

新型数据中心网络安全体系研究

当前&#xff0c;新型基础设施建设已上升至国家战略&#xff0c;被赋予了数字化、智能化的新意义。作为算力基础设施&#xff0c;新型数据中心是信息基础设施中的重要内容&#xff0c;是数字政府、数字经济的“信息底座”&#xff0c;是未来引领数字经济发展的关键载体和支柱&a…

每日一博 - 闲聊云原生和容器编排

文章目录 概念1. 云原生&#xff08;Cloud Native&#xff09;&#xff1a;2. 容器编排&#xff08;Container Orchestration&#xff09;&#xff1a; 小结 概念 云原生和容器编排是两个不同的概念&#xff0c;但它们之间有着密切的联系。下面将分别介绍这两个概念&#xff0…

Docker搭建私有仓库并迁移

目录 方案 A、B机器安装docker 设置阿里云镜像源 安装 Docker-CE并设置为开机自动启动 A机器准备数据 拷贝数据 B机器运行redis、mysql镜像 重启docker服务 方案 准备两台机器&#xff1a;A机器&#xff08;可以连接外网&#xff09;&#xff0c;B机器&#xff08;内网机器…

Maven-Java代码格式化插件spring-javaformat

TOC 官方文档&#xff1a;点击进入 前言 项目研发过程中&#xff0c;随着团队人员的增加变更环境配置的不同&#xff0c;有些同学甚至没有格式化代码的习惯&#xff0c;导致编码风格不统一杂乱无章&#xff0c;为解决这一问题引入Spring提供的格式化代码插件。插件支持多种方…

Python|爬虫和测试|selenium框架模拟登录示例(一)

前言&#xff1a; 上一篇文章Python|爬虫和测试|selenium框架的安装和初步使用&#xff08;一&#xff09;_晚风_END的博客-CSDN博客 大概介绍了一下selenium的安装和初步使用&#xff0c;主要是打开某个网站的主页&#xff0c;基本是最基础的东西&#xff0c;那么&#xff0c;…

C++ 网络编程项目fastDFS分布式文件系统(八)--

目录 1 程序中的相关协议 1 程序中的相关协议 1. 注册 客户端 // url http: //127.0.0.1:80/reg // post 数据格式 { userName:xxxx, nickName:xxx, firstPwd:xxx, phone:xxx, email:xxx } 服务器 成功 {"code":"002"} 该用户已存在 {&q…

Mysql45讲学习笔记

前言&#xff1a;这篇文章主要总结事务&#xff0c;锁、索引的一些知识点&#xff0c;然后分享一下自己学习小心得&#xff0c;我会从点到线在到面展开说说&#xff0c;对于学习任何知识&#xff0c;我们都应该藐其全貌&#xff0c;不要一开始就选入细节 基础 一、基础架构&a…

4.Redis数据类型的编码方式

数据结构和内部编码 type 命令实际返回的就是当前键的数据结构类型&#xff0c;它们分别是&#xff1a;string&#xff08;字符串&#xff09;、list&#xff08;列表&#xff09;、hash&#xff08;哈希&#xff09;、set&#xff08;集合&#xff09;、zset&#xff08;有序…

kali安装Hashpump(简单无比)

安装 OpenSSL 开发库&#xff1a; sudo apt-get update sudo apt-get install libssl-dev克隆 Hashpump 仓库 git clone https://github.com/bwall/HashPump.git进入 HashPump 目录 cd HashPump编译并安装 Hashpump make sudo make install使用 Hashpump 工具&#xff1a; …

OLED透明屏拼接:创造更大尺寸的显示区域,提供更广阔的视觉体验

OLED透明屏拼接是一项创新技术&#xff0c;可以实现更大尺寸的显示区域和更加连续和流畅的画面效果&#xff0c;为广告、商场、零售、智能家居等领域提供更多的创意和可能。 下面将详细介绍OLED透明屏拼接的原理、优势、应用领域&#xff0c;希望看后对您了解OLED透明屏有所帮…

WPF怎么实现文件拖放功能winform怎么实现拖拽功能

WPF怎么实现文件拖放功能winform怎么实现文件拖拽功能&#xff0c;在管理员模式下wpf winform怎么实现文件的拖拽功能 WPF实现文件拖放功能&#xff0c;正常情况并没有什么问题&#xff0c;但是如果你的程序使用管理员身份启动&#xff0c;你就会发现文件拖放功能就会失效。同…

捕鱼船识别检测算法

捕鱼船识别检测预警系统通过yolov5python网络模型图像识别分析技术&#xff0c;捕鱼船识别检测预警算法利用河道两岸的摄像头实时监测水域中的捕鱼船活动&#xff0c;一旦系统识别到违规捕捞行为&#xff0c;立即发出预警信号&#xff0c;立即发出预警信号&#xff0c;确保及时…

Abaqus软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Abaqus是一款专业的有限元分析软件&#xff0c;广泛应用于工程领域&#xff0c;特别是机械、汽车、航空航天、材料科学等领域。它具有强大的有限元分析功能&#xff0c;可以模拟各种复杂的物理和力学问题&#xff0c;为工程师提…

openCV实战-系列教程8:直方图与傅里叶变换(直方图定义/均衡化原理/均衡化效果/傅里叶概述/频域变换结果/低通与高通滤波)、原理解析、源码解读

打印图像直接用这个函数&#xff1a; import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows()1、直方图 1.1 基本定义…

开源软件的崛起:历史与未来

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案

image.png 背景 前段时间我们想实现 Pulsar 消息的追踪流程&#xff0c;追踪实现的效果图如下&#xff1a; 实现其实比较简单&#xff0c;其中最重要的就是如何存储消息。 消息的读取我们是通过 Pulsar 自带的 BrokerInterceptor 实现的&#xff0c;对这个感兴趣的朋友后面会单…