springboot日志

1、日志用途 

  • 故障排查和调试:当项目出现异常或者故障时,日志记录可以快速帮助我们定位到异常的部分以及知道异常的原因。
  • 性能监测和优化:通过在关键代码路径中添加日志记录,可以了解应用程序的性能表现,并根据性能表现优化程序。
  • 安全审计和监控:通过监视和分析系统日志,可以检测和识别潜在的安全威胁,如入侵、恶意行为或非法访问等非法行为。
  • 数据统计和分析:通过对日志信息进行统计和分析,可以获取关于用户行为、系统使用情况和业务趋势等有价值信息并分析。

2、日志框架

日志框架常见的两个概念:日志门面(Logging Facade)和日志实现(Logging Implementation)

日志门面是一个抽象层,它定义了一组统一的日志接口,用于在应用程序中记录日志它的作用是将应用程序代码与具体的日志实现解耦,使得应用程序代码不直接依赖于某个具体的日志框架。通过使用日志门面,可以在运行时灵活地切换不同的日志实现,而无需修改应用程序的代码。

日志实现是指具体的日志框架的实现,它实现了日志门面所定义的接口,并提供了实际的日志记录功能不同的日志实现提供了不同的配置选项、功能和性能特性。开发人员可以根据项目需求选择合适的日志实现,并使用相应的配置进行日志记录。

要使用日志门面,需要在应用程序中引入相应的日志门面库(SLF4J和Commons Logging),并通过配置文件或代码设置具体的日志实现(Log4j和Logback)这样,应用程序就可以通过调用日志门面的接口来记录日志,而具体的日志记录将由所配置的日志实现来处理。这种分离的设计允许开发人员更方便地切换和管理日志框架,并提供了更大的灵活性和扩展性。

3、日志信息

4、日志级别 

  • trace:级别最低,意为微量少许
  • debug:需要调试时打印的信息
  • info:普通打印信息(默认)
  • warn:警告信息
  • error:错误信息,级别较高
  • fatal:致命的,代码异常导致退出,系统级别的日志级别,无法手动控制

以上日志级别由上往下依次增强,而日志级别越高,控制台打印出的日志信息就越少,但打印出的日志信息越重要

项目设置的日志级别默认为 INFO,也就是控制台只打印收到的INFOWARNERRORFATAL级别的日志,而TRACEDEBUG级别的日志不进行打印。

日志级别配置只需要在配置文件中设置 1ogging.leve1 配置项就行。

项目重启后就可以看到debug日志

5、日志打印

在程序中获取日志对象需要使用日志工厂LoggerFactory

// 这里的Logger类输入org.slf4j包下的,不可导错包
private Logger logger = LoggerFactory.getLogger(TestController.class);

public void someMethod() {log.trace("trace 级别");log.debug("debug 级别");log.info("info 级别");log.warn("warn 级别");log.error("error 级别");
}

6、日志持久化 

# 日志保存名称
logging:file:name: D:\\home\\springboot.log

7、lombok日志输出 

7.1、添加lombok依赖

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

如果想向创建项目那样引入依赖,又是社区版 IDEA ,可以先安装一个插 EditStarters,然后在 pom.xml 文件中右键选择 Generate,选择 Edit Starters,选择 OK,然后就是熟悉的添加依赖的界面

 7.2、使用 @Slf4j 注解输出日志

@Controller
@ResponseBody
@Slf4j
public class UserController {@RequestMapping("/login")public void func1() {log.trace("trace等级日志");log.debug("debug等级日志");log.info("info等级日志");log.warn("warn等级日志");log.error("error等级日志");}
}

注意:如果使用 @Slf4j 注解的话,需要使用 log 对象调用各种方法,这是 lomlok提供的对象名

通过加一个注解就能使得获取日志对象操作变得简单,lombok 究竟是如何做到这一点的能,注解的背后又是什么呢

通过查看目录 target 答案就被揭晓,我们知道 target 实际上就是编译好的字节码文件目录,JVM 最后真正执行的就是字节码文件

这是编译好的字节码文件,可以发现 @Slf4j注解不见了,代码里出现了老版获取日志文件的代码

@Controller
@ResponseBody
public class UserController {private static final Logger log = LoggerFactory.getLogger(UserController.class);public UserController() {}@RequestMapping({"/login"})public void func1() {log.trace("trace等级日志");log.debug("debug等级日志");log.info("info等级日志");log.warn("warn等级日志");log.error("error等级日志");}
}

7.3、lombok原理

  • 对于一个普通的Java程序来说,当用户写好代码之后进行编译,然后生成一个.class为后缀的字节码文件,将其放到JVM虚拟机上去运行就可以让程序跑起来了

  • 对于lombok框架支持后,它就会与普通的java程序一同进行编译,然后生成.class为后缀的字节码文件

 7.4、lombok更多注解

  • 基本注解
注解作用
@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.mzph.cn/news/592137.shtml

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

相关文章

MT8766安卓核心板规格参数_MTK8766核心板模块方案定制

MT8766安卓核心板&#xff1a;高性能、稳定可靠、集成度高的一体化解决方案 MT8766安卓核心板采用联发科MTK8766四核4G模块方案&#xff0c;是一款高度集成的安卓一体板。四核芯片架构&#xff0c;主频可达到2.0GHz&#xff0c;支持国内4G全网通。12nm制程工艺&#xff0c;支持…

引导过程与服务控制

一、开机启动的完整过程 bios加电自检测-------mbr------grub----------加载内核文件------------启动第一个进程 简述&#xff1a;加电后bios程序会自检硬件&#xff0c;硬件无故障&#xff0c;会根据第一启动项去找内核&#xff0c;一般来说&#xff0c;第一启动项是硬盘&a…

网络端口(包括TCP端口和UDP端口)的作用、定义、分类,以及在视频监控和流媒体通信中的定义

目 录 一、什么地方会用到网络端口&#xff1f; 二、端口的定义和作用 &#xff08;一&#xff09;TCP协议和UDP协议 &#xff08;二&#xff09;端口的定义 &#xff08;三&#xff09;在TCP/IP体系中&#xff0c;端口(TCP和UDP)的作用 &#xff08;…

使用GPTs+Actions自动获取第三方数据

目录 安装插件与GPT对话联网插件首先,创建GPTs。 Voxscript 官网:https://voxscript.awt.icu/index.htmlOpenAI Schema:https://voxscript.awt.icu/swagger/v1/swagger.yamlServer URL: servers: url: https://voxscript.awt.icu安装插件 要使用这个插件&

干洗店洗鞋店小程序核心功能有哪些?

在繁忙的生活中&#xff0c;我们的鞋子常常承载着风尘仆仆的故事。而洗鞋小程序&#xff0c;就是那个让您的鞋子焕然一新的魔法师。通过这个小程序&#xff0c;您可以在线预约、支付&#xff0c;查询洗鞋订单&#xff0c;并与洗鞋店铺进行互动&#xff0c;轻松享受专业的洗鞋服…

HarmonyOS4.0系统性深入开发12 卡片数据交互说明

卡片数据交互说明 ArkTS卡片框架提供了updateForm()接口和requestForm()接口主动触发卡片的页面刷新。 接口是否系统能力约束updateForm否1. 提供方调用。2. 提供方仅允许刷新自己的卡片&#xff0c;其他提供方的卡片无法刷新。requestForm是1. 使用方调用。2. 仅允许刷新添加…

数字图像处理(3)——频域图像增强

&#x1f525;博客主页&#xff1a;是dream &#x1f680;系列专栏&#xff1a;深度学习环境搭建、环境配置问题解决、自然语言处理、语音信号处理、项目开发 &#x1f498;每日语录&#xff1a;贤才&#xff0c;难进易出&#xff1b;庸才&#xff0c;易进易初出&#xff1b;…

Character Controller Smooth

流畅的角色控制器 Unity的FPS解决方案&#xff01; 它是一种具有非常平滑运动和多种设置的解决方案&#xff1a; - 移动和跳跃 - 坐的能力 - 侧翻角度 - 不平整表面的处理 - 惯性守恒 - 重力 - 与物理物体的碰撞。 - 支持没有家长控制的平台 此解决方案适用于那些需要角色控制器…

Jmeter的安装与快速使用(做并发测试)

1、了解 JMeter是一款开源的性能测试工具&#xff0c;它主要用于模拟多种负载条件下的应用程序或服务器的性能和功能。JMeter可以发送不同类型的请求&#xff0c;如HTTP、HTTPS、FTP、SOAP、REST等&#xff0c;并且可以模拟多种负载类型&#xff0c;例如并发用户、线程组、定时…

正则表达式 详解,10分钟学会

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们讨论正则表达式。 正则表达式是一种用于匹配和操作文本的工具&#xff0c;常用于文本查找、文本替换、校验文本格式等场景。 正则表达式不仅是写代码时才会使用&#xff0c;在平常使用的很多文本编辑软件&#xff0c;都…

关于Python里xlwings库对Excel表格的操作(二十五)

这篇小笔记主要记录如何【如何使用xlwings库的“Chart”类创建一个新图表】。 前面的小笔记已整理成目录&#xff0c;可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 &#xff08;1&#xff09;如何安装导入xlwings库&#xff1b; &#xff08;2…

案例分享:Qt多国语言输入法软键盘

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/135346374 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

aspose通过开始和结束位置关键词截取word另存为新文件

关键词匹配实体类&#xff1a; Data EqualsAndHashCode(callSuper false) public class TextConfig implements Serializable {private static final long serialVersionUID 1L;/*** 开始关键词&#xff0c;多个逗号分隔*/private String textStart ;/*** 结束关键词&#x…

【操作系统xv6】学习记录4 -CPU上下文:进程上下文、线程上下文、中断上下文

什么是cpu上下文 CPU 寄存器和程序计数器就是 CPU 上下文&#xff0c;因为它们都是 CPU 在运行任何任务前&#xff0c;必须的依赖环境。 什么是 CPU 上下文切换 先把前一个任务的 CPU 上下文&#xff08;也就是 CPU 寄存器和程序计数器&#xff09;保存起来&#xff0c;然后…

Flutter+Go_Router+Fluent_Ui仿阿里网盘桌面软件开发跨平台实战-买就送仿小米app开发

Flutter是谷歌公司开发的一款开源、免费的UI框架&#xff0c;可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux 的跨平台开发。 Flutter官方介绍&#xff0c;目前Flutte…

ubuntu系统没有网络图标的解决办法

参考文章:https://blog.csdn.net/qq_56922632/article/details/132309643 1. 执行关闭网络服务的命令&#xff0c;关闭网络服务sudo service NetworkManager stop2. 删除网络的状态文件sudo rm /var/lib/NetworkManager/NetworkManager.state3. 修改网络的配置文件sudo vi /etc…

冒泡排序-排序算法

前言 如果有6个人站成一排&#xff0c;要将他们按从矮到高的顺序排列。你可能有多种方式来完成。但是如果其中有一个人特别高&#xff0c;比他身边的人高&#xff0c;在队伍中特别明显&#xff0c;你可以轻易看出那个最高的需要和身边的人交换位置&#xff0c;这是冒泡排序的核…

二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】

目录 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 方法二&#xff1a;传址调用记录节点个数 二、二叉树的最大深度 三、平衡二叉树 四、二叉树遍历 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 计算树的节点数: 函数TreeSize用于…

案例086:基于微信小程序的影院选座系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

履机乘变,轻舟便楫:源启分布式PaaS深度赋能企业级技术平台建设

导语 源启分布式PaaS平台围绕应用视角为用户提供应用运行的全生命周期管控能力&#xff0c;提供注册中心、服务路由、网关、服务治理等中间件技术支持&#xff0c;实现应用之间的联通&#xff0c;解决客户多厂商产品不兼容、产品组合不可选择、孤岛效应等问题&#xff0c;满足…