SpringBoot(三):日志文件

news2024/12/24 2:55:11

目录

  • 一、日志文件
    • 1.1 日志文件的作用
    • 1.2 Spring Boot内置了日志框架
    • 1.3 日志的格式说明
    • 1.4 自定义日志打印
    • 1.5 日志的持久化
    • 1.6 日志的级别
      • 1.6.1 日志级别有什么作用
      • 1.6.2 日志的级别划分
      • 1.6.3 日志级别的设置
    • 1.7 使用lombok输出日志
      • 1.7.1 lombok的原理
      • 1.7.2 lombok其他注解

一、日志文件

1.1 日志文件的作用

日志是程序的重要组成部分,最重要的作用是排除和定位问题,还可以通过日志实现一些其他的功能:

  • 记录用户登录日志,方便分析用户是正常用户还是恶意破解用户
  • 记录系统的操作日志,翻遍数据恢复和定位操作人
  • 记录程序的执行时间,方便为以后优化程序提供数据支持

1.2 Spring Boot内置了日志框架

在启动Spring Boot之后,就会有日志输出:
在这里插入图片描述

1.3 日志的格式说明

在这里插入图片描述

1.4 自定义日志打印

自定义日志的实现步骤:

  • 在程序中得到日志对象
  • 使用日志对象的相关语法输出要打印的内容

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

注意:

Logger 对象是属于 org.slf4j 包下的

【常见的日志框架】

在这里插入图片描述
日志门面主要用来提高代码的移植性,例如SLF4J会根据日志底层具体实现框架进行适配

【为什么不能有System.out代替日志】

  1. 只有打印信息,而没有其他的信息,包括级别、类名、时间等
  2. 对于日志来说可以通过设置级别控制日志在不同的环境是否显示,而System.out做不到

1.5 日志的持久化

正常情况下,日志都是输出到控制台上的,但在生产环境上需要将日志保存下来,以便出现问题之后追朔问题,把日志保存下来的过程就叫持久化
有两种方式可以实现日志的持久化:

  1. 配置日志文件的保存路径
# 设置日志的保存目录
logging:
  file:
    path: D:\log\

在这里插入图片描述

  1. 配置日志文件的文件名
# 设置日志的保存文件
logging:
  file:
    name: springboot.log

相当于在项目的根路径下生成一个springboot.log的日志文件
在这里插入图片描述
注意:

  • 日志会一直追加到该文件中,不会丢失
  • 当日志比较大的时候,会自动分隔成多个文件

1.6 日志的级别

1.6.1 日志级别有什么作用

  • 日志的级别能帮助筛选重要的信息,例如设置日志级别为error,那么就可以只看程序的报错日志,对于普通的调试日志和业务日志就被筛选掉了,提高排错误的效率
  • 日志可以控制不同环境下,一个程序是否需要打印日志,如开发环境需要详细的日志信息,而生产环境为了保证性能和安全性就会输入尽量少的日志,而通过日志级别可以实现此需求

1.6.2 日志的级别划分

日志的级别分别为:

  • trace:微量,稍许,级别最低
  • debug:需要调试时候的关键信息打印
  • info:普通的日志,Springboot默认日志级别
  • warn:警告,不影响程序运行,但需注意
  • error:错误信息
  • fatal:致命的,因为代码异常导致程序退出执行的事件

在这里插入图片描述

越往下,收到的日志信息越少,trace级别,能够收到所有级别的信息,warn级别,只能收到warn、error、fatal级别的信息

1.6.3 日志级别的设置

在配置文件中设置"logging.level"配置项

设置某个目录下的日志级别:

logging:
  level:
    com:
      example:
        demo:
          model: warn

在这里插入图片描述

设置全局的日志级别:

logging:
  level:
    root: debug

配置全局级别为debug,trace级别的日志不会被打印出来
在这里插入图片描述

1.7 使用lombok输出日志

每次都使用LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,而添加了lombok依赖后,输出日志的写法更简单

  1. 添加lombok框架支持
  2. 使用@Slf4j注解
<dependency>
<groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.20</version>
 <optional>true</optional>
</dependency>

在这里插入图片描述

使用@Slf4j注解,日志的对象名为log,这是lombok提供的对象名

1.7.1 lombok的原理

在这里插入图片描述
lombok会根据@Slf4j加到了哪个类上,然后在对应的class文件(字节码文件)中,生成一行这个样的代码:

private static Logger logger= LoggerFactory.getLogger(xxxx.class);

1.7.2 lombok其他注解

@Getter,@Setter,@ToString,@EqualsAndHashCode,@NoArgsConstructor,@AllArgsConstructor,@NonNull,@RequiredArgsConstructor

组合注解:在这里插入图片描述
日志注解:
在这里插入图片描述

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

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

相关文章

在JS文件中使用或扩展已有的vue文件

工作中遇到一个给现有项目增加一个超时重新登录的提醒框&#xff08;可在提醒框中直接登录本账户&#xff09;。 由于页面稍微复杂&#xff0c;本人又是脚手架一把梭过来的&#xff0c;对于直接使用 js 来完成一整个复杂还带逻辑的页面稍显吃力&#xff0c;所以决定先写一个 vu…

建模助手【有求必应】的正确打开方式

今天的话题主要想解除大家对[有求必应] 的一些误解。 因为在日常的反馈中用户似乎对于[提需求] 这玩意儿无论是从概念上还是动作上都很不 “熟悉”。 其实我们对软件认知的上限是一个软件功能的上限&#xff0c;产品以及行业的发展都要从打破固有认知开始。 期待更多的你们跳出…

《新华日报·科技周刊》聚焦蓝海彤翔与《流浪地球2》

瞄准世界科技前沿瞄准江苏科技创新瞄准日常科技生活《新华日报科技周刊》第203期聚焦《流浪地球2》中的大国重器其实就在我们身边重点报道了蓝海创意云渲染农场为《流浪地球2》提供了云计算渲染服务的重要成果“数字生命计划”就是元宇宙吗&#xff1f;电影中人类面临末日危机&…

0基础如何入门人工智能?

1.1 概念 根据维基百科的解释&#xff0c;人工智能是被机器展示的智力&#xff0c;与人类和其他动物的自然智能相反&#xff0c;在计算机科学中 AI 研究被定义为 “代理人软件程序”&#xff1a;任何能够感受周围环境并且能最大化它成功机会的设备。 1.2 重大事件 2016 年 3…

[Java]JavaWeb学习笔记(尚硅谷2020旧版)

文章目录&#x1f3c0; 视频及资料地址&#x1f3c0; XML⚽ XML 简介&#x1f3d0; xml 的作用⚽ XML 语法&#x1f3d0; 文档声明&#x1f3d0; 注释&#x1f3d0; 元素(标签)⚾ XML 命名规则⚾ xml 中的元素(标签)也分单双标签&#x1f3d0; xml 元素属性&#x1f3d0; 语法规…

PHP控制反转和依赖注入的理解(通俗易懂)

目录 1.IoC是什么 2.IoC能做什么 3.IoC和DI 4.IoC(控制反转) 5.DI(依赖注入) 6.我对IoC(控制反转)和DI(依赖注入)的理解 学习PHP各个框架的过程中&#xff0c;都会听过IoC(控制反转) 、DI(依赖注入)这两个概念&#xff0c;总觉得IoC 、DI这两个概念是模糊不清的&#xff…

WINSOFT JSEngine Delphi 6-D11

WINSOFT JSEngine Delphi 6-D11 WinsoftJSEngine被认为是一个海豚引擎&#xff0c;包括一个强大的JavaScript引擎。 Winsoft JSEngine的功能和特点&#xff1a; Microsoft ChakraCore JavaScript强大的引擎实用程序 支持32位和64位窗口 提供给海豚版本6 Eli 10.1和Lazarus 为产…

29岁,从餐饮到网络安全,大龄转行逆袭成功

大龄转行&#xff0c;一直在网络上备受讨论。 从学习能力、试错成本来考虑&#xff0c;转行一定是越早越好&#xff0c;而大龄转行风险极大。 大龄转行&#xff0c;固然并非一条绝路&#xff0c;苏老泉&#xff0c;二十七&#xff0c;始发愤&#xff0c;读书籍&#xff0c;有的…

C++学习记录——사 类和对象(1)

文章目录1、面向对象和面向过程的初步理解2、类的引入3、类的定义4、类的访问限定符及封装1、访问限定符2、封装5.类的实例化6、类对象模型7、this1、this指针2、空指针问题3、C语言和C简单对比1、面向对象和面向过程的初步理解 C语言是一个面向过程的语言&#xff0c;C是一个…

美颜sdk人脸识别代码技术分析

很多人问过小编&#xff0c;什么样的美颜sdk才算好&#xff1f;对于这个问题&#xff0c;小编认为至少要符合以下几个特点。 1、稳定性强&#xff1b;2、识别精准&#xff1b;3、功能多样&#xff1b;4、集成容易&#xff1b;5、离线使用&#xff1b;6、支持多端&#xff1b;7、…

新手入门,深入解析 python lambda表达式

lambda 表达式是 Python 中的匿名函数。它接受任意数量的参数&#xff0c;并返回一个单个表达式的值。它的语法格式如下&#xff1a; lambda arguments: expression 文章目录lambda 函数原型解释lambda 函数用作其它参数lambda 函数高级的技巧多个参数返回多个值条件表达式嵌套…

java基础巩固-宇宙第一AiYWM:为了维持生计,编程语言番外篇之机器学习(项目预测模块总结:线性回归算法、逻辑回归分类算法)~整起

机器学习一、机器学习常见算法&#xff08;未完待续...&#xff09;1.算法一&#xff1a;线性回归算法&#xff1a;找一条完美的直线&#xff0c;完美拟合所有的点&#xff0c;使得直线与点的误差最小2.算法二&#xff1a;逻辑回归分类算法3.算法三&#xff1a;贝叶斯分类算法4…

PythonWeb开发基础(一)B/S开发和http协议

文章目录PythonWeb开发基础&#xff08;一&#xff09;B/S开发和http协议请求响应连接PythonWeb开发基础&#xff08;一&#xff09; B/S开发和http协议 推荐书籍&#xff1a;《HTTP权威开发指南》 前端&#xff1a;数据的格式化呈现&#xff0c;python中的format函数其实就…

【MyBatis】查询语句汇总

定义一个Car类:/*** 封装汽车相关信息的 pojo类*/ public class Car {// 数据库表当中的字段应该和pojo类的属性一一对应// 建议使用包装类, 这样可以防止null的问题private Long id;private String carNum;private String brand;private Double guidePrice;private String pro…

MATLAB入门——线性规划、非线性规划、多目标规划

4-1 线性规划_哔哩哔哩_bilibili 4-2 非线性规划_哔哩哔哩_bilibili 4-3 多目标规划_哔哩哔哩_bilibili 1.线性规划 有限条件下&#xff0c;最大收益 1. 例题 例题&#xff1a;张麻子既要攻碉楼又要追替身&#xff0c;他们一伙6人&#xff0c;总共1200发子弹;每有一人攻确…

【GCC】1: RTCP RR接收端生成

m79 代码。参考bytewoods 大神的以下文章:WebRTC 基于GCC的拥塞控制(上) WebRTC 基于GCC的拥塞控制(下)虽然可以拿到估算的带宽但是rtcp 总是malformed packet个 有必要带着问题跟进下整个过程 RR报文 基于丢包率的码率控制运行在发送端,依靠RTCP RR报文进行工作。* report b…

Vue2低代码平台搭建(一)

前言 大家好,我是L丶Y,这一次,我们来聊一聊前端低代码平台的构建。近些年来,随着Saas行业的高速发展,低代码的概念也逐渐流行了起来,而低代码产品也越来越多的出现在我们的身边,像国外的Mendix,国内的宜搭、苍穹、简道云等等,想通过这篇文章与大家对于前端低代码平台…

如何使用Baklib搭建企业内部wiki

Wiki 是一个协同著作平台或称开放编辑系统。我们可以用Wiki来建设帮助系统&#xff0c;知识库系统。国内公共wiki最著名就是百度百科&#xff0c;国外则是基维百科&#xff1b;Wiki最著名的例子之一是维基百科&#xff0c;它在MediaWiki上运行&#xff0c;任何拥有Web浏览器的人…

QT opencv 学习day02 基本数据结构 point Scalar Size Rect Mat 等等

1.point &#xff08;画点&#xff09; 1. 函数原型&#xff1a; //二维的点 typedef Point_<int> Point2i; typedef Point_<int64> Point2l; typedef Point_<float> Point2f; typedef Point_<double> Point2d; typedef Point2i Point;//三维的点…

EasyExcel 实现 批量生成多sheet多Excel打包zip下载

目录说明需求场景实现1、准备一个excel模板2、把整个excel模板放在resources里面3、重点代码效果图说明 需求场景 导出学校中高年级的学生信息&#xff0c;根据班级名称分组&#xff0c;一个班级一个excel导出&#xff0c;如果多个excel需要打包成zip压缩包下载&#xff0c;一…