【Springboot】日志

1.日志的使用

日志主要用于记录程序运行的情况。我们从学习javase的时候就使用System.out.println();打印日志了,通过打印的日志来发现和定位问题,或根据日志来分析程序运行的过程。在Spring的学习中,也经常根据控制台的⽇志来分析和定位问题 。

日志除了发现和定位问题,还可以进行系统监控,数据采集和日志审计。

系统监控:统计⽇志中关键字的数量,并在关键字数量达到⼀定条件时报警,这也是⽇志的常⻅需求之⼀

数据采集:统计⻚⾯的浏览量(PV),访客量(UV),点击量等,根据这些数据进⾏数据分析,优化公司运营策略

日志审计:一条记录的删除或修改 ,通过日志记录是谁操作的,如果出现内部的违规和信息泄露现象后,为时候追查提供依据。⼀些公司查看客⼾的信息都会被记录⽇志,如果频繁查询也会报警

1.1.打印日志

@RestController
public class LoggerController {//1.定义日志对象private Logger logger = LoggerFactory.getLogger(LoggerController.class);@PostConstructpublic void print(){System.out.println("打印日志");logger.info("=====我是使用日志框架打印日志=====");}
}

打印结果:

image-20240121184517037

使⽤⽇志对象打印⽇志的结果显示的信息比System.out.println();要全。日志对象打印的日志包括:时间,级别,进程ID,线程,打印日志的类,日志内容。

日志对象的名称,通常情况下,是当前类,可能为缩写。

1.2 日志框架的介绍

日志框架使用的SLF4J 。SLF4J 并不是一个真实的日志实现,而是日志的门面。不能独立使用,需要搭配具体的实现日志比如:log4j/2,或者logback。

SLF4J 是外观模式(门面模式)的典型应用,注意SLF4J 并不是只有外观模式。

门面模式(FacadePattern)又称为外观模式,提供了一个统一的接口,用来访问子系统的一群接口。其主要特征是定义了⼀个高层接口,让子系统更容易使用.

门面模式的优点:

  1. 实现了客户端和子系统间的耦合关系,使子系统的变化不会影响到调用他的客户端。
  2. 提高了灵活性,简化了客户端对子系统的使用难度,客户端无需关心子系统的具体实现,只需要和门面对象交互即可。
  3. 提⾼了安全性.可以灵活设定访问权限,不在⻔⾯对象中开通⽅法,就⽆法访问

1.3 日志的级别

⽇志的级别从⾼到低依次为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE
• FATAL:致命信息,表⽰需要⽴即被处理的系统级错误.
• ERROR:错误信息,级别较⾼的错误⽇志信息,但仍然不影响系统的继续运⾏.
• WARN:警告信息,不影响使⽤,但需要注意的问题
• INFO:普通信息,⽤于记录应⽤程序正常运⾏时的⼀些信息,例如系统启动完成、请求处理完成等.
• DEBUG:调试信息,需要调试时候的关键信息打印.
• TRACE:追踪信息,⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代)

日志级别的使用:

@Slf4j
@RestController
public class LoggerController {//1.定义日志对象private Logger logger = LoggerFactory.getLogger(LoggerController.class);@PostConstructpublic void print(){logger.info("=====我是使用日志框架打印日志=====");logger.error("我是error日志");logger.warn("我是warn日志");logger.info("我是info日志");logger.debug("我是debug日志");logger.trace("我是trace日志");}
}

输出结果:

image-20240121204512479

因为spring默认的日志级别是info.只能输出比info高的日志信息。所以我们上面的输出结果中debug和trace没有输出。

要想输出日志级别比info低的需要进行日志配置

1.4日志配置

其他配置可以查看:常见的 Application Properties (springdoc.cn)

配置日志级别为debug:

logging:level:root: info # 全局目录的级别com:bite:demo: debug # 指定目录日志的级别

日志的持久化(就是把日志保存在文件中):

logging:file:name: logger/ioc.log

日志分割:

logging:logback:rollingpolicy:max-file-size: 1KB # 分割日志文件的大小file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i # 日志文件分割的名称定义规则

配置日志格式:

logging:console: '%d{HH:mm:ss.SSS} %c %M %L [%thread] %m%n' # 控制台格式file: '%d{HH:mm:ss.SSS} %c %M %L [%thread] %m%n' # 文件格式	

2. 简单的日志输出

先添加lombok依赖。然后在类上添加@Slf4j注解

@Slf4j
@RestController
public class LoggerController {@PostConstructpublic void print(){log.info("=====我是使用日志框架打印日志=====");log.error("我是error日志");log.warn("我是warn日志");log.info("我是info日志");log.debug("我是debug日志");log.trace("我是trace日志");}
}

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

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

相关文章

数据分析实战:城市房价分析

流程图: 1.读数据表 首先,读取数据集。 CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATtarget0.00632182.3100.5386.57565.24.09129615.3396.94.98240.0273107.0700.4696.42178.94.9671224217.8396.99.1421.60.0272907.0700.4697.18561.14.9671224217…

大英第四册课后翻译答案

目录 Unit 1Unit 2Unit 3Unit 4小结: Unit 1 中庸思想(Doctrine of the Mean)是儒家思想的核心内容。孔子所谓的“中”不是指“折中”,而是指在认识和处理客观事物时的一种“适度”和“恰如其分”的方法。孔子主张不仅要把这种思…

街机模拟游戏逆向工程(HACKROM)教程:[14]68K汇编-标志寄存器

在M68K中,有许多条件分支指令,和jmp指令一样也会修改PC达到程序跳转或分支的目的,不过这些会根据一些情况或状态来选择是否跳转。而在M68K中,有一个特别的寄存器来标记这些情况。 CCR(状态标志寄存器) CCR寄存器是用来保存一些对…

微前端-无界wujie

无界微前端方案基于 webcomponent 容器 iframe 沙箱,能够完善的解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。 主项目安装无界 vue2项目:npm i wujie-vue2 -S vue3项目…

77. 组合 - 力扣(LeetCode)

题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 输入示例 n 4, k 2输出示例 [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]解题思路 我们使用回溯、深度优先遍历的思想,我们使用一个栈 path…

SpringSecurity+OAuth2.0 搭建认证中心和资源服务中心

目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心(8080端口) 2.2 资源服务中心(8081端口) 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0(开放授权 2.0)是一个开放标准,用于授权第三方应用程序…

Leetcode的AC指南 —— 栈与队列:225.用队列实现栈

摘要: **Leetcode的AC指南 —— 栈与队列:225.用队列实现栈 **。题目介绍:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 …

简单了解AJAX

文章目录 1、什么是AJAX2、AJAX快速入门3、Axios异步框架3.1、Axios 快速入门3.2、Axios 请求方式别名 1、什么是AJAX 概念:AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML AJAX作用: 与服务器进行数据交换:通…

图卷积GCN实战基于网络结构图的网络表示学习实战

下面的是数据: from,to,cost 73,5,352.6 5,154,347.2 154,263,392.9 263,56,440.8 56,96,374.6 96,42,378.1 42,58,364.6 58,95,476.8 95,72,480.1 72,271,419.5 271,68,251.1 134,107,344.0 107,130,862.1 130,129,482.5 227,167,1425.7 167,298,415.7 298,209,42…

Unity3D学习之Unity基础——3D数学

文章目录 1. 前言2 Mathf和Math基础2.1 一般用于只计算一次的函数2.1.1 PI Π PI2.1.2 取绝对值 Abs2.1.3 向上取整 CeilToInt2.1.4 向下取整 FloorToInt2.1.5 钳制函数 Clamp2.1.6 获取最大值 Max2.1.7 获取最小值 Min2.1.8 一个数的n次幂 Pow2.1.9 四舍五入 RoundToInt2.1.10…

Spring Boot实现统一异常处理的技术解析

引言 在软件开发过程中,异常处理是非常重要的一环。一个好的异常处理机制可以帮助我们更好地定位问题,提高代码的可维护性和稳定性。Spring Boot作为一款轻量级的Java开发框架,提供了一种简单而高效的方式来实现统一异常处理。本文将详细介绍…

springboot 3 + mysql8 + flyway 数据库版本管理

1、flyway flyway官方文档地址:https://documentation.red-gate.com/fd 对于不怎么看文档的我来说: 1)flyway是个管理数据库版本的工具,可以对不同环境的sql进行迁移操作。 2)优点:初始化、后期数据的管理…

java使用jsch处理软链接判断是否文件夹

前言 这一次主要是碰到一个问题。因为使用jsch去读取文件的时候,有一些文件它是使用软链接制作的一个映射。因为这里面有一个问题。如果它是软链接你就无法判断他到底是文件。还是文件夹?因为他没有提供可以直接读取的方法,用权限信息去判断…

Nomogram文献分析:提取数据

前言 今天教大家如何分析Nomogram类型的文章,并使用我们开发的系统零代码提取数据。 系统地址:https://clinicaldata.fun/ 要分析的文章:https://pubmed.ncbi.nlm.nih.gov/36504658/ 。这是一篇典型的mimic-iii数据分析的套路,…

srm-50——攻防世界

可以知道这道题是二类题型,你完成某个事情给你flag 我们输入正确的东西,给“flag” 运行一下可以知道这些关键词 直接关键词在字符串里面 找到运行得到的东西 INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) {HMODULE Mo…

vue.js js 雪花算法ID生成 vue.js之snowFlake算法

随着前端业务越来越复杂,自定义表单数据量比较大,每条数据的id生成则至关重要。想到前期IOS中实现的雪花算法ID,照着其实现JS版本,供大家学习参考。 一、库的建立引入 在你项目中创建一个snowFlake.js的文件:拷贝以下…

【2020】百度校招Java研发工程师笔试卷(第二批)算法题

贴一下我去年9月份写的博客 三道编程题,一道数学题,两道图论,哎嘿嘿,我就是不会做,哎嘿嘿,哭了。。。 一.最小值 牛牛给度度熊出了一个数学题,牛牛给定数字n,m,k,希望度度熊能找到…

Python使用graphviz绘制模块间数据流

graphviz官方参考链接: http://www.graphviz.org/documentation/ https://graphviz.readthedocs.io/en/stable/index.html 文章目录 需求描述环境配置实现思路代码实现 需求描述 根据各模块之间的传参关系绘制出数据流,如下图所示: 并且生成…

【SpringBoot】SpringBoot 项目初始化方法

github 搜索 springboot 模板 github 搜索 springboot 模板,拉取现成代码。 SpringBoot 官方的模板生成器 SpringBoot 官方的模板生成器(https://start.spring.io/) 在 IDEA 开发工具中生成 这里我修改成阿里的镜像主要是要使用 Java8。 …

YOLOv8 更换主干网络之 HGNetV2

论文地址:https://arxiv.org/abs/2304.08069 代码地址:https://github.com/PaddlePaddle/PaddleDetection 中文翻译:https://blog.csdn.net/weixin_43694096/article/details/131353118 YOLOv8 更换方式 YOLOv8 想用这个主干直接换就行了,因为项目里面已经集成了,写一个…