Spring日志框架

前言

本文我们简单说说关于Spring中的日志框架,以及对应的注解

我们知道,公司服务器在运行的时候,一定会打印日志,有很多优点,比如预防报警,或者是某重大事故尝试修复等等都需要查看日志

应该说日志对我们来说并不陌生,我们在之前刷题或者是程序遇到bug的时候也经常会将程序的状态等打印在控制台上

但是随着项目的复杂度的增加,仅仅使用System.out,print语句已经不能满足我们了,我们需要更加专业的一些日志框架来帮助我们解决问题

本篇我们就将讲解一个Spring引入的外部框架,简单好用

就像我们平常控制台上的日志一样,可以体现更多的信息

日志的用途

我们首先知道日志是发现问题解决问题的

但是日志不仅仅只支持这几个功能,他的功能甚至更加强大

比如日志还有以下功能

1.系统监控

        通过日志监控一个系统的运行状态,每一个方法的响应时间,响应状态的设置不同的规则,超过规则达到一定阈值进行报警啊等等等

2.数据采集

         统计页面的浏览量,从而可以设置主页的推荐排序啊等等

3.日志审计

         这就涉及国家要检查企业的日志等等,涉及一些网络安全问题

日志的使用

首先我们来介绍一下启动spring的时候系统生成的日志

这里的每一条日志都是由 时间 + 日志级别 + 进程号 + --- + 项目名 + 线程名 + Logger名(通常使用源代码的类名) + 日志内容

其中日志的等级分为

FATAL,ERROR,WARN,INFO,DEBUG,TRACE

注:这里的日志级别主要是给不同的人来过滤信息使用的

FATAL:需要立即被处理的系统级别错误

ERROR:需要出来,但是不影响系统的持续运行

WARN:不影响使用,但是需要注意

INFO:普通信息,比如请求完成等

DEBUG:调试信息,一般不显示

TRACE:比DEBUG更细粒度的调试信息

级别越高,收到的信息越少

下面我们来打印点自己的日志瞅瞅

我们发现这里INFO以下级别的日志根本没有被打印出来

注:SpringBoot的默认日志框架是logback,logback中不存在fatal级别,他被逻辑映射到了error中

我们发现这里并没有出现DEBUG级别和TRACE级别的日志,这是因为Spring的默认参数设置是INFO级别,只会显示这个级别以上的日志文件,我们如果想看到低级别的日志可以去配置文件中修改参数即可

将logger.level修改成debug就可以看到debug及以上的信息了

设计模式

日志这里涉及两个设计模式 

工厂模式和门面模式

由于我们在之前介绍过工厂模式,这里就做过多赘述了

我们这里简单介绍一下门面模式(又称外观模式)

我们这里使用的框架叫做SLF4J 这就是一个日志的门面

主要做的事情就是让客户端减少和底层的直接交互,而是通过这个抽象层,访问子系统的一堆接口,降低了其中的耦合性,定义了一个高层接口,让子系统更容易被使用

比如你家的智能家居

你可以通过手机上的软件来直接操作家里的各种电器,而不需要使用底层电器的直接开关

日志的持久化

日志通常是不断产生的,我们需要将日志持久化到文件中,以便于保存或者出现问题的时候及时查看 ,所以我们需要将日志持久化到文件中保存

这里在文件中设置配置保存的路径或者文件名即可

这里我们的配置可以使用两种

1.使用路径 + 文件名

比如  logging.file.name    就会发现在项目中多了一个文件夹和一个文件

2.使用路径(不支持文件名,这里使用文件名会被当做文件路径)

logging.file.path  这里不管使用什么后缀都不会生效

注解方式使用日志 

我们只需要导入lombok的依赖即可使用 

加入一个@slf4j注解即可,其实现和工厂模式的实现相同,我们可以查看idea给的反编码

查看官方文档

点击官方文档,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java数据结构-链表OJ题

目录 1. 移除链表元素2. 反转链表3. 返回中间结点4. 返回倒数第k个结点5. 合并两个有序链表6. 分割链表7. 回文链表8. 找相交链表的公共结点9. 判断链表是否有环10. 返回链表环的入口 老铁们好,学习完链表这个数据结构之后,怎么能少了OJ题呢?…

SQL语句学习+牛客基础39SQL

什么是SQL? SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。 SQL语法 数据库表 一个…

Windows下使用tensorrt配置YOLOv8进行加速

Windows下使用tensorrt配置YOLOv8进行加速 致谢: win10下 yolov8 tensorrt模型加速部署【实战】 - 知乎 (zhihu.com) yolov8 tensorrt 实战之先导_哔哩哔哩_bilibili FeiYull/TensorRT-Alpha: 🔥🔥🔥TensorRT for YOLOv8、YOLOv8…

K8S故障处理指南:pod驱逐问题处理

更多技术博客,请关注微信公众号:运维之美 在K8S集群故障处理过程中,你可能遇到过pod的各种状态,Evicted状态代表你的K8S环境遇到了资源驱逐的问题,本节通过对驱逐问题的解决,参数的调整,问题的处理思路,希望给你解决此类问题提供帮助。 一、pod驱逐问题 pod出现状态为…

AR智能眼镜解决方案_MTK平台安卓主板硬件芯片方案开发

AR智能眼镜,是一个可以让现场作业更智能的综合管控设备。采用移动互联网、大数据和云计算等技术,现场数据的采集与分析;同时实现前端现场作业和后端管理的实时连动、信息的同步传输与存储。让前端现场作业更加智能,后端管理更加高…

Java代码基础算法练习-自定义函数之字符串连接-2024.03.30

任务描述: 写一函数,将两个字符串连接起来,然后在主函数中调用该函数实现字符串连接操作。 任务要求: 代码示例: package M0317_0331;import java.util.Scanner;public class m240330 {public static void main(Stri…

Java使用数组实现栈、队列、堆

数组模拟栈: const int N 10010; // ******************** 栈 int stk[N], tt//tt是下标; // 插入 stk[k] x; // 删除 tt--; // 判断栈是否为空 if (tt > 0) not empty else empty // 栈顶 stk[tt]; // ******************** 队列 // 在队尾插入…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有: 基于BitVM的乐观 BTC bridgeBitVM:Bitcoin的链下合约Bitcoin Bridge:治愈还是诅咒? 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例,以引入基于 1-of-n 诚实假设的多方配置。这…

3D目标检测综述笔记

3D Object Detection for Autonomous Driving: A Review and New Outlooks https://arxiv.org/pdf/2206.09474.pdf 目录 0.background​编辑 1.1表示形式 1.2感知输入 1.3数据集 1.4评估指标 1. LiDAR-based 3D Object Detection 2.数据表征 2.1 point-based​ 2.1.…

APP UI自动化测试框架总结,各种项目实战加源码等你来拿

开发语言选择 通常用于自动化测试的编程语言有:Python、Java、Javascript、Ruby、C#、PHP等。一般我们会选择自己熟悉的编程语言来编写自动化脚本,但对于编程基础基本为0的童鞋(或者专注于做自动化测试的童鞋),推荐学…

JAVA8 新特性StreamAPI使用

一、使用StreamAPI,操作两个队伍中名字,需求如下: 1、第一个队伍名字为3个字的成员姓名 2、第一个队伍筛选名字为3个字之后的前三个成员 3、第二个队伍筛选姓张的成员 4、第二个队伍筛选姓张的之后跳过前两个成员 5、将两个队伍合并成一个队伍…

线性CCD

线性CCD 综述:本文讲述了线性CCD是什么、由什么组成、工作原理、芯片TSL401的引脚和时序、线性CCD的时序。 1. 定义 线性CCD,只能采集一行像素,分辨率为128,也即是线性CCD≈128个光电传感器。经过光照时,光电二极管…

请问2核4G云服务器,可以带得动多少人?5M带宽

腾讯云轻量应用服务器2核4G5M配置性能测评,腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?并发数10,支持每天5000IP人数访问,腾讯云百科txybk.com整理2核4G服务器支持多少人同时在线?并发数测试、CPU性能、内存性能、…

941: 有序顺序表的合并操作的实现

学习版 【c语言】 1.顺序表元素类型 2.顺序表的初始化 3.顺序表的插入 4.顺序表的合并 #include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm>typedef struct {int* data; // 数据数组的指针int length; // 当前顺序表…

常见代码漏洞介绍

目录 1.XSS攻击 1.1 存储型 XSS&#xff08;Stored XSS&#xff09; 1.2 反射型 XSS&#xff08;Reflected XSS&#xff09; 1.3 DOM 型 XSS&#xff08;DOM-based XSS&#xff09; 1.4 修复方案 2.日志伪造 2.1 伪造方法 2.2 解决方法 2.3 验证结果 3.ESAPI 第一步…

第10讲:操作符详解

第10讲&#xff1a;操作符详解 1. 操作符的分类2. 二进制和进制转换2.1 二进制转十进制10进制转2进制数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/45fb3048f5164084b9d494b3d233bc42.png)2.2 二进制转八进制和十六进制2.2.1 二进制转八进制2.2.2 二进制转十六…

C语言例1-3:设 int a; ,语句 for(a=0;a==0;a++); 和语句 for(a=0;a=0;a++); 执行的循环次数分别是

答案&#xff1a;1,0 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("1\n");} return 0; } 结果如下&#xff1a; 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("…

【DA-CLIP】生成图像描述generate_captions.py代码理解+实践

上一篇博文解决了运行环境问题 【DA-CLIP】Windows下使用clip_interrogator/BLIP进行生成图像-文本-退化类型数据集的generate_caption.py代码运行逻辑-CSDN博客https://blog.csdn.net/m0_60350022/article/details/137061820?spm1001.2014.3001.5501 回顾思路 用HQ图生成干…

VAE——生成数字(Pytorch+mnist)

1、简介 VAE&#xff08;变分自编码器&#xff09;同样由编码器和解码器组成&#xff0c;但与AE不同的是&#xff0c;VAE通过引入隐变量并利用概率分布来学习潜在表示。VAE的编码器学习将输入数据映射到潜在空间的概率分布的参数&#xff0c;而不是直接映射到确定性的潜在表示…

git最常用的命令与快捷操作说明

git最常用的命令与快捷操作说明 最常用的git三条命令1、git add .2、git commit -m "推送注释"3、git push origin 远程分支名:本地分支名 其他常用命令本地创建仓库分支删除本地指定分支切换本地分支合并本地分支拉取远程仓库指定分支代码过来合并推送代码到远程分支…