当前位置: 首页 > news >正文

Spring Boot 日志

为什么学日志?

通过前⾯的学习, 我们知道⽇志主要是为了发现问题, 分析问题, 定位问题的, 但除此之外, ⽇志还有很多⽤途

1、系统监控

2、数据采集

3、日志审计

日志的使用

打印日志的步骤:

  1. 在程序中得到⽇志对象.
  2. 使⽤⽇志对象输出要打印的内容

1、得到日志对象

在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory,如下代码所示:

2、使用日志对象输出要打印的内容

⽇志对象的打印⽅法有很多种,我们可以先使⽤ info() ⽅法来输出⽇志,如下代码所示:

3、@Slf4j注解打印日志

我们可以直接使用注解就可以了

我们使用的注解是  @Slf4j

门面模式(外观模式)

SLF4J是门面模式的典型应⽤(但不仅仅使⽤了门面模式)

门面模式定义:

门面模式(Facade Pattern)⼜称为外观模式, 提供了⼀个统⼀的接⼝, ⽤来访问⼦系统中的⼀群接⼝. 其主要特征是定义了⼀个⾼层接⼝, 让⼦系统更容易使⽤。

门面模式主要包含2种角色:

  1. 外观角色
  2. 子系统角色

门面模式的优点:

  1. 减少了系统的相互依赖. 实现了客⼾端与⼦系统的耦合关系, 这使得⼦系统的变化不会影响到调⽤它的客⼾端;

  2. 提⾼了灵活性, 简化了客⼾端对⼦系统的使⽤难度, 客⼾端⽆需关⼼⼦系统的具体实现⽅式, ⽽只需要和⻔⾯对象交互即可.

  3. 提⾼了安全性. 可以灵活设定访问权限, 不在⻔⾯对象中开通⽅法, 就⽆法访问

SLF4J 框架介绍

日志格式说明

下面是上述代码的介绍:

  1. 时间⽇期:精确到毫秒
  2. ⽇志级别:ERROR, WARN, INFO, DEBUG 或TRACE
  3. 进程ID
  4. 线程名
  5. Logger名(通常使⽤源代码的类名)
  6. ⽇志内容

日志级别分类

  1. FATAL: 致命信息,表⽰需要⽴即被处理的系统级错误.

  2. ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏.

  3. WARN: 警告信息, 不影响使⽤, 但需要注意的问题

  4. INFO: 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息, 例如系统启动完成、请求处理完成等.

  5. DEBUG: 调试信息, 需要调试时候的关键信息打印.

  6. TRACE: 追踪信息, ⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代)

日志级别的使用

针对这些级别, Logger 对象分别提供了对应的⽅法, 来输出⽇志:

我们打印出来之后,发现只有info,warn,error三种日志级别

这与⽇志级别的配置有关, ⽇志的输出级别默认是 info级别, 所以只会打印⼤于等于此级别的⽇志, 也就是info, warn和error.

日志配置

配置日志级别

日志级别配置只需要在配置⽂件中设置"logging.level"配置项即可,如下所示:

⭐这里我们使用的配置文件是yml

我们进行运行查看

这次我们明显可以看出来,设置debug之后,出来的级别>=debug了

日志持久化

以上的⽇志都是输出在控制台上的, 然而在线上环境中, 我们需要把⽇志保存下来, 以便出现问题之后追溯问题. 把⽇志保存下来就叫持久化.

日志持久化有两种方式

  1. 配置⽇志⽂件名
  2. 配置⽇志的存储⽬录

配置日志文件名

yml配置

再次运行程序就会出现,里面就自动保存我们刚刚打印的日志了

配置日志文件的保存路径

yml配置下

再次运行程序就会出现,里面就自动保存我们刚刚打印的日志了

⭐注意

loggin:file:name  设置的是路径+名称

loggin:file:path    设置的是名称

当name和path同时使用的时候,name的优先级高。

配置日志文件分割

如果我们的⽇志都放在⼀个⽂件中, 随着项⽬的运⾏, ⽇志⽂件会越来越⼤, 需要对⽇志⽂件进⾏分割.

yml配置

http://www.xdnf.cn/news/453241.html

相关文章:

  • 仿真每日一练 | 多刚体动力学分析中的自由度问题
  • 领麦微红外温度传感器:发面机非接触测温
  • AI短期学习计划(持续完善更新)
  • 基于CETOL 6σ的生产不良判定与故障分析技术应用
  • Android Framework学习五:APP启动过程原理及速度优化
  • Made with Unity | 拓展“双点”宇宙版图
  • 再来1章linux系列-17 ssh sshd sshd非对称加密(密钥加密)‌SSH对称加密组件/流程
  • 树莓派3B+ wiringPi库安装
  • 【golang】网络数据包捕获库 gopacket
  • 用户模块 - IP归属地框架吞吐测试
  • 运维日志管理全解析:从存储优化到合规审计
  • LeetCode 题解 41. 缺失的第一个正数
  • 静电的起因与静电效应:技术分析与应用
  • svn status . 命令返回分析
  • 交易所功能设计的核心架构与创新实践
  • 论文查询的ai工具 —— SCAICH
  • 总共76dp 空出20dp然后放一个控件的写法
  • Shell和Bash介绍
  • PT2022E单触控三段LED调光IC
  • 云渲染实用指南:如何高效省心地使用炫云平台
  • JVM 精华
  • [特殊字符] GSG 插件 + 渲染 101:C4D 渲染效率革命!
  • 程序设计语言----软考中级软件设计师(自用学习笔记)
  • 防御保护-----第十三章:L2TP VPN
  • 强力巨彩谷亚推出专业智慧显示屏,满足多元场景需求
  • Java 垃圾回收机制深度解析与优化实践
  • IO复用详解——C/C++
  • 远程连接工具
  • Spring AOP的注解实现(自定义注解实现日志管理)
  • 17.电话号码的字母组合