【框架篇】Spring Boot 日志

news2025/4/6 0:21:56

在这里插入图片描述

Spring Boot 日志

在这里插入图片描述


一,日志用途

尽管一个项目在没有日志记录的情况下可能能够正常运行,但是日志记录对于我们来说却是至关重要的,它存在以下功能:

1,故障排查和调试:当项目出现异常或者故障时,日志记录可以快速帮助我们定位到异常的部分以及知道异常的原因。

2,性能监测和优化:通过在关键代码路径中添加日志记录,可以了解应用程序的性能表现,并根据性能表现优化程序。

3,安全审计和监控:通过监视和分析系统日志,可以检测和识别潜在的安全威胁,如入侵、恶意行为或非法访问等非法行为。

4,数据统计和分析:通过对日志信息进行统计和分析,可以获取关于用户行为、系统使用情况和业务趋势等有价值信息并分析。


二,日志框架

日志框架常见的两个概念

日志门面(Logging Facade)和日志实现(Logging Implementation)是在日志框架中出现的两个概念。

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

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

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

常见的日志框架图:


三,日志信息

Spring Boot 项目刚创建好,直接运行项目后就会有日志信息打印,日志信息如下:

image-20230715201756227

以上就是新创建的项目运行后控制台打印的日志信息,说明 Spring Boot 项目内置了日志框架。

image-20230715203031967

日志信息格式:

image-20230715204250533


四,日志级别

日志级别介绍及分类

日志级别(Log Levels)是指日志消息的优先级或者重要程度,它用于对日志的不同类型和重要程度进行分类和过滤。

不同的日志框架可能使用不同的命名和数量的日志级别,但基本概念是相似的。以下是常见的几个标准日志级别:

1,TRACE(追踪):最低级别的日志,包含详细的调试信息,用于追踪代码的执行流程,如方法的输入参数、内部状态等。

2,DEBUG(调试):用于输出调试信息,在开发和调试阶段使用,帮助排查问题和跟踪代码执行情况以及验证程序的行为。

3,INFO(信息):提供程序运行过程中的重要信息,用于向用户提供一些关键的操作状态和进度,如程序启动关闭、配置项变更等。

4,WARN(警告):表示潜在的问题或异常情况,不会阻止程序继续执行,但可能会影响程序的正常运行,需要开发人员注意。

5,ERROR(错误):表示错误情况,通常表示某个功能或步骤无法正常完成,但程序仍然可以继续运行,需要开发人员关注和解决。

6,FATAL(致命):最高级别的日志,表示最严重的错误,表示程序无法继续运行,会导致应用程序的中断或崩溃,如系统崩溃。

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


日志级别设置

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

如果想打印DEBUG级别以上的日志信息,就需要对日志级别进行配置操作。那如何进行日志级别的设置呢?

解答:日志级别配置只需要在配置文件中设置 1ogging.leve1 配置项就行,配置文件如下:

image-20230715212148819

项目重新运行结果,就可以看到DEBUG级别以上的日志了。

image-20230715212445213


五,日志打印

在实际开发中,有时我们需要自定义地打印一些自定义的日志信息,根据自定义的日志信息进行程序代码的调试以及其他操作。

自定义打印日志的实现需要2步操作,分别为在程序中获取打印对象和调用打印对象的相关语法输出打印的日志内容。

1,在程序中获取打印对象

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

image-20230715213753655

2,调用打印对象的相关方法

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

3,在项目的启动类实例化对象,并调用上述方法,运行项目就可以在控制台上看到项目的打印日志。

image-20230716090535179

注意说明:因上面操作将日志级别设置为了DEBUG,所以只打印了DEBUG级别以上的日志信息,而TRACE级别的日志信息没打印。


六,日志持久化

日志持久化是指将应用程序的日志信息保存到持久化存储介质中,以便后续的检索,分析和备份。

常见的日志持久化方式就是将应用程序的日志信息保存到本地目录或文件中。

1,设置日志文件的保存目录

# 日志文件的保存目录设置
logging:
  file:
    path: D:\Project Log

项目运行后,系统会将日志信息保存到指定路径目录下名为spring.log的文件中,该文件是系统自动创建的。

image-20230716093007467

2,设置日志文件的保存文件名

# 日志文件的保存文件设置
logging:
  file:
    name: D:\Project Log\Spring Boot.log

项目运行后,系统会将日志信息保存到指定保存文件名为Spring Boot.log的文件中。

image-20230716093716877


结语

这就是本期博客的全部内容啦!如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!

在这里插入图片描述


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

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

相关文章

14.python设计模式【模板方法模式】

内容:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法某特定步骤。 角色: 抽象类(AbstractClass):定义抽象的原子操作(钩子…

甘特图 Dhtmlx Gantt

介绍 在一些任务计划、日程进度等场景中我们会使用到甘特图,Dhtmlx Gantt 对于甘特图的实现支持很友好,文档API介绍全面,虽然增强版的收费,但免费版的足以够用。 官网:https://docs.dhtmlx.com/gantt/ 安装dhtml gannt…

ORCLE 导入dmp文件方式记录

一、数据库准备 查询数据库表空间存储位置 sql执行 select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; 结果示例 创建空间及用户 例如上方查询结果,得到存储位置:/home/oracle/app/oracle/oradata/…

NISP含金量?NISP真的有必要考么?NISP好考吗?NISP二级为什么那么贵?

NISP证书简述 NISP证书三个级别,分别是:一级、二级、三级(专项) 证书。其每一项资格证书都有不同的优点,但是优点各有 相同,而且拥有NISP二级证书可以免考更换CISP资格证书,那么证书含金量如何下…

Python(Web时代)——初识flask

flask简介 介绍 Flask是一个用Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。它是BSD授权的,一个有少量限制的免费软件许可。它使用了 Werkzeug 工具箱和 Jinja2 模板引擎。 Flask 的设计理念是简单、灵活、易于扩展&a…

C++STL序列式容器——list容器及其常用操作(详解)

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.list容器基本概念二.list容器的常用操作list构造函数list迭代器获取list特性操作list元素操作list赋值操作list的交换、反转、排序、归并操作…

NSToolbar 及自定义

文章目录 自定义 item添加系统自带 item自定义 item 需要显示图片时,item 不设置title- (void)showWindow1{NSWindowStyleMask windowStyles = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturiza

基于java的坦克大战游戏的设计与实现--答辨PPT--【毕业论文】

文章目录 本系列校训毕设的技术铺垫PPT主体层次封面页目录页:设计工具与相关技术:系统分析总体设计:详细设计测试结论: 小技巧 本系列校训 互相伤害互相卷,玩命学习要你管,天生我才必有用,我命…

MySQL绿色安装和配置

1、 从地址http://dev.mysql.com/downloads/mysql/中选择windows的版本下载。 2、 mysql各个版本的简介 (1) MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。 (2) MySQL Enterprise Ed…

自定义view - 炫酷进度条

1. 思路分析 自定义View步骤: 1>:values__attrs.xml,自定义属性; 2>:在第三个构造方法中,获取自定义属性; 3>:onMeasure:不是非必须的,测量控件大小…

基于SSM的简易图书管理系统

基于SSM的简易图书管理系统说明书 目录 1.系统设计... 1 1.1背景意义... 1 1.2创新性... 1 1.3功能介绍... 1 1.4应用价值... 1 2.系统启动与使用... 2 2.1下载系统压缩包并解压... 2 2.2打开系统文件夹... 3 2.3 SSM必需maven依赖加载和tomcat配置... 4 2.4启动系统... 5 2.5进…

SSM游戏社交网站【纯干货分享,免费领源码05667】

目 录 摘要 1 绪论 1.1 研究意义 1.2研究方法 1.3ssm框架 1.4论文结构与章节安排 2 2 游戏社交网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1功能性分析 2.3.2非功能性分析 2…

采集设置为固定值或随机值

网站采集软件怎么采集设置为固定值或随机值? 1. 设置为固定值 例如在简数采集器,进入对应的详情提取器字段数据处理,xpath值为空,然后空内容缺省值设置为固定值,例如示例图的填写为最新资讯,保存完成。 2.…

关于使用easyExcel读取前端文件和MybatisPlus批量插入

关于使用easyExceld读取前端文件和MybatisPlus批量插入 文章目录 关于使用easyExceld读取前端文件和MybatisPlus批量插入实体类监听器开始调用可能出现的问题最后,关于MybatisPlus的批量插入写一个工具类写一个配置类到Mappe中添加这个方法 最近写项目,后…

SUSE 宣布开发与 RHEL 兼容的 Linux 发行版

导读近日消息,SUSE 在今天宣布,它将 fork 公开可用的 Red Hat Enterprise Linux (RHEL),并将开发和维护与 RHEL 兼容的发行版,所有人都可以不受限制地使用该发行版本。未来几年,SUSE 计划向该项目投资超过 1000 万美元…

分布式训练数据并行极致优化:ZeRO

分布式训练数据并行极致优化:ZeRO 导言 随着 ChatGPT 的爆火,大模型成为了近些年人工智能的研究热点。大模型能力惊艳,但是训练起来成本也不小。大模型,顾名思义,最大的特点就是 “大”。这里的 “大” 通常指的就是…

本地部署 Stable Diffusion XL 1.0 Gradio Demo WebUI

StableDiffusion XL 1.0 Gradio Demo WebUI 0. 先展示几张 StableDiffusion XL 生成的图片1. 什么是 Stable Diffusion XL Gradio Demo WebUI2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 Stable Diffusion XL Gradio Demo WebUI6. 启动 Stable Diffusion XL Gradi…

c语言内存函数的深度解析

本章对 memcpy,memmove,memcmp 三个函数进行详解和模拟实现; 本章重点:3个常见内存函数的使用方法及注意事项并学会模拟实现; 如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作的动力…

基于深度学习的裂纹图像分类研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

2023最新ChatGPT商业运营版网站源码+支持ChatGPT4.0+GPT联网+支持ai绘画(Midjourney)+支持Mind思维导图生成

本系统使用Nestjs和Vue3框架技术,持续集成AI能力到本系统! 支持GPT3模型、GPT4模型Midjourney专业绘画(全自定义调参)、Midjourney以图生图、Dall-E2绘画Mind思维导图生成应用工作台(Prompt)AI绘画广场自定…