【SpringBoot】讲清楚日志文件lombok

news2025/7/4 15:49:29

文章目录

  • 前言
  • 一、日志是什么?
  • 二、⽇志怎么⽤?
  • 三.自定义打印日志
    • 3.1在程序中得到日志对象
    • 3.2使用日志打印对象
  • 四.⽇志级别
    • 4.1日志级别有什么用
    • 4.2 ⽇志级别的分类与使⽤
  • 五.日志持久化
  • 六.lombok
    • 6.1添加lobok依赖
    • 注意:使⽤ @Slf4j 注解,在程序中使⽤ log 对象即可输⼊⽇志,并且只能使⽤ log 对象才能输出, 这是 lombok 提供的对象名
    • 6.2lombok原理
    • 6.3lombok 更多注解说明
  • 总结


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、日志是什么?

⽇志是程序的重要组成部分,想象⼀下,如果程序报错了,不让你打开控制台看⽇志,那么你能找到报错的原因吗?
答案是否定的,写程序不是买彩票,不能完全靠猜,因此⽇志对于我们来说,最主要的⽤途就是排除和定位问题。
#除了发现和定位问题之外,我们还可以通过⽇志实现以下功能:
1.记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。
2.记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。
3.记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持。
4.以上这些都是⽇志提供的⾮常实⽤的功能

二、⽇志怎么⽤?

Spring Boot 项⽬在启动的时候默认就有⽇志输出,如下图所示
在这里插入图片描述
这个就是我们说的日志,说明日志在springboot里是内置好的,那么我们应该怎么怎么自定义打印日志呢

三.自定义打印日志

3.1在程序中得到日志对象

在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory,如下代码所示

代码如下(示例):

// 1.得到⽇志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class
);

⽇志⼯⼚需要将每个类的类型传递进去,这样我们才知道⽇志的归属类,才能更⽅便、更直观的定位到问题类
在这里插入图片描述
在这里插入图片描述

3.2使用日志打印对象

⽇志对象的打印⽅法有很多种,我们可以先使⽤ info() ⽅法来输出⽇志,如下代码所示
在这里插入图片描述

package com.example.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LogController {

    // 1.得到日志对象
    private static Logger log =
            LoggerFactory.getLogger(TestController.class);

    @RequestMapping("/log")
    public void log() {
        String msg = "今天已经周二了。";
        log.trace("trace -> " + msg);
        log.debug("debug -> " + msg);
        log.info("info -> " + msg);
        log.warn("warn -> " + msg);
        log.error("error -> " + msg);
    }

}

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

//@Controller
//@ResponseBody
@RestController
@PropertySource(value = "classpath:application.properties",
        encoding = "utf-8")
public class TestController {

    @Value("${myimage.path}")
    private String myImage;

    @RequestMapping("/sayhi")
    public String sayHi() {
        System.out.println(LocalDateTime.now() +" 日志 " +
                "com.example.demo.controller.TestController");
        return "你好,Spring Boot -> " + myImage;
    }
}


四.⽇志级别

4.1日志级别有什么用

1.⽇志级别可以帮你筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了,对于普通的调试⽇志和业务⽇志就可以忽略了,从⽽节省开发者信息筛选的时间。
2.⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如开发环境我们需要很详细的信息,⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求。

4.2 ⽇志级别的分类与使⽤

⽇志的级别分为:
trace:微量,少许的意思,级别最低;
debug:需要调试时候的关键信息打印;
info:普通的打印信息(默认⽇志级别);
warn:警告,不影响使⽤,但需要注意的问题;
error:错误信息,级别较⾼的错误⽇志信息;
fatal:致命的,因为代码异常导致程序退出执⾏的事件;
在这里插入图片描述

五.日志持久化

在这里插入图片描述
可以和我这样子配置
在这里插入图片描述
是在application.yml里写的,记得要俩个斜扛,一个是转义的

六.lombok

6.1添加lobok依赖

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

注意:使⽤ @Slf4j 注解,在程序中使⽤ log 对象即可输⼊⽇志,并且只能使⽤ log 对象才能输出,
这是 lombok 提供的对象名

6.2lombok原理

lombok 能够打印⽇志的密码就在 target ⽬录⾥⾯,target 为项⽬最终执⾏的代码,查看 target ⽬录,如下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.3lombok 更多注解说明

注解 作⽤
@Getter ⾃动添加 getter ⽅法
@Setter ⾃动添加 setter ⽅法
@ToString ⾃动添加 toString ⽅法
@EqualsAndHashCode ⾃动添加 equals 和 hashCode ⽅法
@NoArgsConstructor ⾃动添加⽆参构造⽅法
@AllArgsConstructor ⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
@NonNull 属性不能为 null
@RequiredArgsConstructor ⾃动添加必需属性的构造⽅法,
final +@NonNull 的属性为必需

注解 作⽤
@Data @Getter + @Setter + @ToString +
@EqualsAndHashCode +
@RequiredArgsConstructor +
@NoArgsConstructor
⽇志注解
@Slf4j 添加⼀个名为 log 的⽇志,使⽤ slf4j

总结

今天的博客,希望大佬们能在评论指出错误!~~😘😘

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

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

相关文章

Linux命令与shell脚本编程大全【读书笔记 + 思考总结】

Linux命令与shell脚本编程大全 第 1 章 初识Linux shellLinux的组成及关系结构图是什么&#xff1f;Linux系统内核的作用是什么&#xff1f;内核的主要功能是什么&#xff1f;&#xff08;4点&#xff09;物理内存和虚拟内存是什么关系&#xff1f;内核如何实现虚拟内存&#x…

idea不需安装插件,自动生成mybatis-plus对应的实体类entity,带注解@TableName、@TableId、@TableField

目录 1、修改Generate poJOs.groovy文件 2、idea中连接数据库 3、生成entity代码 4、查看生成的实体类 1、修改Generate poJOs.groovy文件 在项目下方点击Scratches and Consoles→ Extensions→ Database Tools and SQL箭头→schema→ Generate POJOs.groovy 替换为以下文…

ssl下载根证书和中间证书

为了保证客户端和服务端通过HTTPS成功通信&#xff0c;您在安装SSL证书时&#xff0c;也需要安装根证书和中间证书。本文介绍如何获取根证书和中间证书。 使用说明 如果您的业务用户通过浏览器访问您的Web业务&#xff0c;则您无需关注根证书和中间证书&#xff0c;因为根证书…

如何学习 Spring ?学习 Spring 前要学习什么?

整理了一下Spring的核心概念BeanDefinitionBeanDefinition表示Bean定义&#xff0c;BeanDefinition中存在很多属性用来描述一个Bean的特点。比如&#xff1a;class&#xff0c;表示Bean类型scope&#xff0c;表示Bean作用域&#xff0c;单例或原型等lazyInit&#xff1a;表示Be…

PyQt6 QDialogButtonBox组合按钮控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计34条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

【开源威胁情报挖掘3】开源威胁情报融合评价

基于开源信息平台的威胁情报挖掘综述 写在最前面5. 开源威胁情报关联分析5.1 开源威胁情报网络狩猎&#xff1a;技术、方法和最新研究应用实例和未来方向 5.2 开源威胁情报态势感知关键技术和方法应用实例和未来方向 5.3 开源威胁情报恶意检测关键技术和方法应用实例和未来方向…

【PTA题目】7-18 6翻了 分数 15

7-18 6翻了 分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 “666”是一种网络用语&#xff0c;大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”&#xff0c;意思是“6翻了”&#xff0c;实在太厉害的意思。如果你以为这就是厉害的最高境界&…

Mindspore实现手写数字识别

废话不多说&#xff0c;首先说一下我使用的环境&#xff1a; python3.9 mindspore 2.1 使用jupyter notebook Step1&#xff1a;导入相关依赖的包 import os from matplotlib import pyplot as plt import numpy as np import mindspore as ms import mindspore.context a…

【SpringMVC】Spring Web MVC入门(一)

文章目录 前言什么是Spring Web MVC&#xff1f;什么是MVC什么是Spring MVC&#xff1f; Spring Boot 和 Spring MVC 的区别什么是Spring Boot&#xff1f;关系和区别 Spring MVC 学习注解介绍1. SpringBootApplication2. RestController3. RequestMapping3.1 RequestMapping 使…

CSS3 修改滚动条样式

上图&#xff1a; 上代码&#xff1a; /* 修改垂直滚动条 */ .right-list::-webkit-scrollbar {width: 2px; /* 修改宽度 */height: 5px; /* 修改高度 */ } /* 修改滚动条轨道背景色 */ .right-list::-webkit-scrollbar-track {background-color: #f1f1f1; } /* 修改滚动条滑块…

找不到DNS地址的解决方案

找不到DNS地址的解决方案 第一种解决方案&#xff1a;刷新DNS缓存第二种解决方案&#xff1a; 配置Internet协议版本4&#xff08;TCP/IPv4&#xff09;配置IP地址配置DNS地址 如何查看本机IPv4地址、子网掩码与默认网关 第一种解决方案&#xff1a;刷新DNS缓存 WINR输入cmd回…

GEE:Sobel算子卷积

作者&#xff1a;CSDN _养乐多_ 本文将深入探讨边缘检测中的一个经典算法&#xff0c;即Sobel算子卷积。我们将介绍该算法的基本原理&#xff0c;并演示如何在Google Earth Engine中应用Sobel算子进行图像卷积操作。并以试验区NDVI为例子&#xff0c;研究区真彩色影像、NDVI图…

python毕业设计论文选题管理系统b615y

毕业论文管理方式效率低下&#xff0c;为了提高效率&#xff0c;特开发了本毕业论文管理系统。本毕业论文管理系统主要实现的功能模块包括学生模块、导师模块和管理员模块三大部分&#xff0c;具体功能分析如下&#xff1a; &#xff08;1&#xff09;导师功能模块&#xff1a;…

站群优化工具,站群优化方案策略

站群优化&#xff0c;作为网络推广的一项重要策略&#xff0c;站群的构建和优化对于提升网站在搜索引擎中的排名、吸引目标流量、增加用户粘性等方面有着不可忽视的作用。 站群优化方案 站群优化并非简单的堆积大量网站&#xff0c;更要注重质量和策略。在构建站群时&#xff…

大数据技术之Flume(超级详细)

大数据技术之Flume&#xff08;超级详细&#xff09; 第1章 概述 1.1 Flume定义 Flume是Cloudera提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构&#xff0c;灵活简单。 1.2 Flume组成架构 Flume组成架构如…

WPF绘图---Canvas中Polygon屏幕居中显示

问题描述 在一个Canvas中绘制了多个Polygon&#xff0c;由于坐标可能超出界面显示范围&#xff0c;需要将绘制的Polygon居中显示&#xff0c;并且缩放至界面大小&#xff0c;效果如下&#xff1a; xaml代码 <Borderx:Name"border"Background"#fff"Cli…

三个写法统计整数前导0个数

从键盘输入一个整数(可能有前导0)&#xff0c;编程统计其前导0个数&#xff0c;其法有三。 (笔记模板由python脚本于2023年12月03日 12:32:32创建&#xff0c;本篇笔记适合对python整型int和字符型str熟悉的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;http…

C++17中的结构化绑定

C17中的结构化绑定(structured binding):将指定名称绑定到初始化程序的子对象或元素。简而言之&#xff0c;它们使我们能够从元组或结构中声明多个变量。与引用一样&#xff0c;结构化绑定是现有对象的别名&#xff1b;与引用不同&#xff0c;结构化绑定不必是引用类型(referen…

华天动力-OA8000 MyHttpServlet 文件上传漏洞复现

0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合&#xff0c;为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA MyHttpServlet 存在任意文件上传漏洞&#xff0c;未经身份认证的攻击者可上传恶意的raq文件…

图片处理OpenCV IMDecode模式说明【生产问题处理】

OpenCV IMDecode模式说明【生产问题处理】 1 前言 今天售后同事反馈说客户使用我们的图片处理&#xff0c;将PNG图片处理为JPG图片之后&#xff0c;变为了白板。 我们图片处理使用的是openCV来进行处理 2 分析 2.1 图片是否损坏&#xff1a;非标准PNG头部 于是&#xff0c;马…