【进阶】Spring Boot日志文件

news2024/11/18 4:38:23

努力经营当下,直至未来明朗!

文章目录

  • 一、日志有什么用
  • 二、日志怎么用
  • 三、 自定义日志打印
  • 四、 日志级别
  • 五、日志持久化
  • 六、更简单的日志输出——lombok
  • 小结


普通小孩也要热爱生活!

一、日志有什么用

  1. 日志是解决问题最直观、最有效的方法。
  2. ⽇志对于我们来说,最主要的⽤途就是排除和定位问题
  3. 除了发现和定位问题之外,我们还可以通过⽇志实现以下功能:

① 记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。
记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。
③ 记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持。
以上这些都是⽇志提供的⾮常实⽤的功能。


二、日志怎么用

  1. Spring Boot运行就有日志文件,默认是输出到控制台的sout。
  2. Spring Boot日志能够输出,说明Spring Boot是内置了日志框架的。
  3. 日志默认是输出到控制台上,不能持久化保存。

三、 自定义日志打印

  1. Spring Boot 自定义日志的打印:
    1)在一个类中先获取到打印日志对象(日志框架提供日志对象,而日志框架已经默认集成到Spring Boot中了)
    2)使用日志对象提供的方法实现日志的打印。

  2. 自定义日志打印
    1)首先创建一个Spring Boot项目(创建方式见:Spring Boot项目创建)
    2)新建类(与启动类同级或其子目录下),加上五大类注解和非静态页面@ResponseBody注解
    3)获取日志对象:Logger是从org.slf4j中获取的,其中LoggerFactory.getLogger(参数:类对象)
    4)写一个方法,使用日志提供的打印方法来打印日志;并给该方法加上路由@RequestMapping(“/xxx”)

[补充] log.日志级别

  • trace(); // 微量级别
  • debug(); // 调试阶段打印日志
  • info(); // 输出普通日志信息
  • warn(); // 警告
  • error(); // 错误

0
因为 Spring Boot 中内置了⽇志框架 slf4j,所以咱们可以直接在程序中调⽤ slf4j 来输出⽇志

1

  1. 日志打印输出:
    2
    为什么只有三个输出?
    理由info是默认的级别。只会输出大于等于当前级别的信息。

  2. 日志格式说明:
    3

  3. 常见日志框架说明(简单看看就行):
    5


四、 日志级别

  1. 日志级别有什么用?
    ① ⽇志级别可以帮你筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了,对于普通的调试⽇志和业务⽇志就可以忽略了,从⽽节省开发者信息筛选的时间。
    ② ⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如开发环境我们需要很详细的信息,⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求。

  2. 日志级别的分类
    1)trace:微量,少许的日志;级别最低
    2)debug:调试的时候打印的日志。
    3)info:普通日志;是Spring Boot 默认 的日志级别。
    4)error:错误日志;级别较高。
    5)fatal:致命的日志,因为代码异常导致程序退出执行。 【fatal是系统输出的日志,不能自定义打印!

fatal不能被自定义打印的,其余全部是可以进行打印的

  1. 日志级别的顺序(主流说法):只能看到该级别以及往上级别的信息
    6

  2. 日志级别的设置:在配置文件中进行设置
    ⽇志级别设置只需要在配置⽂件中设置“logging.level”配置项即可。

1)设置 全局(root) 的日志级别
7

2)设置某个/局部 文件夹的日志级别
注意:该文件夹的目录是从蓝色的java文件夹下开始计算的
8

3)存在全局日志和局部日志级别同时设置时,此时访问局部日志的时候就是使用局部日志级别。也就是说:局部日志级别优先于全局日志级别


五、日志持久化

  1. 日志持久化就是将日志信息永久保存到磁盘上的某个位置。

  2. 日志持久化实现手段
    1)在配置文件中设置日志的保存路径(logging.file.path=到文件夹即可),当设置了保存路径之后,日志就会自动地进行持久化。
    2)在配置文件中设置日志保存的名称logging.file.name=,日志会自动进行持久化。

  3. 具体实现日志持久化:
    1)在配置文件中设置日志的保存路径(logging.file.path=到文件夹即可):
    如图,如果说路径正确的情况下并没有在对应位置生成日志,此时可能是:Spring Boot会认为 \字母 是一个特殊的字符而不是目录,此时日志持久化失败。
    10

解决方法
① 此时,修改路径中的\为 / 重新进行持久化:(推荐使用该方式)
11
12

② 将 \进行转义操作
13
15

2)在配置文件中设置日志保存的名称 [logging.file.name=指定全路径or相对路径,一般是指定全路径,相对路径找不到]
16
17

  1. 持久化之后,每次重启之后都不会覆盖之前的内容,而是直接进行追加。

  2. 日志默认大小是10MB,当日志大于了10MB之后就会默认在文件名后面加上1、2、…序号进行分割。

  3. 如果想要自己设置文件大小并进行分割操作,在配置文件中进行设置:(了解就行)

[此时示例是在application.yml配置文件中进行设置]
18

  1. 日志格式也是可以进行格式化的:logging: .去查看(.properties中)

六、更简单的日志输出——lombok

  1. 准备工作:添加lombok到当前项目
    1)在项目之前就添加(也就是创建项目的时候就选上了lombok)
    2)在原有的项目基础上进行添加
    首先安装插件plugins:EditStarters -> 在pom.xml中depencies -> 右键 -> generate -> Edit Starters -> 链接地址默认SpringBoot官网(不用修改) -> search lombok -> 添加 -> ok

20
21
22

  1. 在引入lombok依赖成功之后,就可以使用 @Slf4j 注解

@Slf4j 注解替代了之前通过LoggerFactory.getLogger获取日志对象的操作,默认生成的是log对象
(注意,在方法上同样要加上路由)

  1. 注意:如果某个类要实现浏览器web的调用,类注解就必须是@Controller,其他类注解就会404!另外,还必须给该类加上@ResponseBody返回非静态页面数据,否则就会报500!

  2. lombok原理:
    jvm只能识别.class字节码文件,所以lombok在编译时可以将注解@Slf4j 进行等价替换
    30

  3. lombok更多注解说明:(看看就行
    lombok注解文档:lombok注解

1)基本注解

注解作用
@Getter自动添加getter方法
@Setter自动添加setter方法
@ToString自动添加toString方法
@EqualsAndHashCode自动添加equals和hashCode方法
@NoArgsConstructor自动添加无参构造方法
@AllArgsConstructor自动添加全属性构造方法,顺序按照属性的定义顺序
@NonNull属性不能为空
@RequiredArgsConstructor自动添加必需属性的构造方法,final + @NonNull 的属性为必需

2)组合注解

注解作业
@Data@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor +@NoArgsConstructor

3) 日志注解

注解作用
@Slf4j添加⼀个名为 log 的⽇志,使⽤ slf4j

小结

  1. 使用日志快速定位和解决问题。另外,还可以记录用户登录日志、系统操作日志、程序执行时间等
  2. 日志是Spring Boot项目内置的框架
  3. 默认日志级别是info,只能打印大于等于默认级别的日志
  4. fatal不能自定义打印
  5. 日志默认级别的设置logging.level.
  6. 日志持久化设置:路径logging.file.path= 或 名称logging.file.name=
  7. 更简单的日志输出:lombok依赖,@Slf4j注解

11111

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

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

相关文章

ROS2机器人编程简述humble-第二章-Launchers .3.3

ROS2机器人编程简述humble-第二章-Publishing and Subscribing .3.2ros2 run一次只能开启一个node,如果一次开启一组相关node,需要使用ros2 launch。支持Python, XML, 和 YAML。推荐Python。zhangrelayLAPTOP-5REQ7K1L:~$ ros2 run -h usage: ros2 run […

Mysql之约束

简介 not null前面也说过,这些约束是针对列的数据的,对应整个列的数据都起约束作用 基本但是创建表在字段后使用的语句 1.primary key-主键 主键特征1.对应列不能有重复的数据2.不能为NULL 唯一且非空 -- 主键 -- id,name,email CREATE TABLE t17(id…

AX7A200教程(1): DDR3仿真平台搭建(一)

本章节主要调用官方的MIG控制器,并使用官方的MIG控制器进行仿真,开发环境vivado2020.1鉴于很多童鞋无法仿真自己新建的DDR工程,即使使用modelsim仿真也仿真失败,本例程着重于在vivado中,对自己新建的带DDR3的工程进行仿…

力扣45.跳跃游戏Ⅱ(贪心思路详解)

文章目录力扣45.跳跃游戏Ⅱ题目描述算法思路代码实现力扣45.跳跃游戏Ⅱ 题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意…

114、【树与二叉树】leetcode ——77. 组合:回溯法+剪枝优化(C++版本)

题目描述 原题链接:77. 组合 解题思路 组合问题是回溯法里的经典问题,分别采用两个全局变量path记录当前组合情况,res作为结果集。每次因为结果集需要去重,因此还需要再设置一个局部变量startIndex作为每次遍历的起始值&#xf…

Linux kernel Memory Pin机制的实现以及测试

提起Memory Pin机制,就不得不提到swap的概念,这两个概念息息相关,为了避免在CPU忙碌的时候,也就是在缺页异常发生的时候,临时搜索可供换出的内存页面并加以换出,Linux内核定期地检查系统的空闲页面数量是否…

九大数据分析方法-单指标分析方法与多指标分析方法

文章目录1 单指标分析方法1.1 周期性分析法1.2 结构分析法1.3 分层分析法2 多指标分析方法2.1 矩阵分析法2.2 指标拆解法本文来源,为接地气的陈老师的知识星球,以及付同学的观看笔记。1 单指标分析方法 顾名思义,用单个数据指标进行数据分析…

RocketMQ 简介

一、简介 官方简介: l RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点: l 能够保证严格的消息顺序 l 提供丰富的消息拉取模式 l 高效的订阅者水平扩展能力 l 实时的消息订阅机制 l 亿级消息堆积能力 二、网络架构 三、特性 1. na…

05-jquery基本过滤器

2.5过滤器 过滤器是一个字符串,用了筛选dom对象,过滤器是和选择器一起使用。在选择dom对象后,再进行过滤筛选。 .5.1基本过滤器 使用dom对象在数组中的位置,作为过滤条件。 1 选择数组中第一个dom成员。 语法:$(“选…

【nginx】全面实战-Mac

▒ 目录 ▒🛫 导读需求1️⃣ 安装brew替换为阿里源修复报错No such file or directorybrew install nginx常用文件及目录常用命令2️⃣ nginx配置配置结构3️⃣ web服务器默认服务器自定义静态服务器4️⃣ 反向代理配置及介绍5️⃣ 负载均衡配置及介绍负载均衡的策略…

杂记:python和pyinstaller从头安装步骤(附安装包的备份)

pyinstaller 简介 知道的就跳过本章 python 属于脚本语言,只要有 python 就能运行 .py 文件。而 pyinstaller 是可执行文件文件生成工具,约等于编译工具。 以 windows 为例,在 A 计算机上生成的 exe,复制到 B 计算机可以直接运行…

字节跳动青训营--前端day3

文章目录前言一、写好JavaScript的一些原则二、各司其职三、组件封装四、过程抽象前言 仅以此文章记录学习 一、写好JavaScript的一些原则 各司其职:让HTML、CSS和JavaScript职能分离组件封装:好的UI组件具备正确性、扩展性、复用性过程抽象&#xff1…

JVM堆内存分配策略(深入理解Java虚拟机第三章)

堆内存模型: 年轻代: 根据分代算法,默认小于15岁的对象称作年轻代,年轻代分为Eden区、幸存者区(Survivor Form,Survivor To),三者比例为:8:1:1 Eden 分区:对象出生分区…

Java 实现几种 异步的实现方式

前言 异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:发送短信、邮件、异步更新等,这些都是典型的可以通过…

FL水果21最新版本电脑编曲软件FL Studio更新

电脑编曲软件也就是我们常说的宿主软件,英文简称DAW。 FL Studio俗称水果,是一款开发初衷为了电子音乐制作的宿主软件。内置了非常多优秀的合成器以及效果器插件,极为适合于电子音乐的编排。同时FL Studio支持第三方音源插件导入,…

[RootersCTF2019]ImgXweb

目录 信息收集 JWT伪造 工具使用 寻找秘钥 curl 补充知识 信息收集 进入查看源码未发现重要信息 注册admin失败,猜测应该需要垂直越权 先随意注册个账户coleak 登录后发现可以文件上传,上传shell后发现不能连接,执行命令也没有回显…

Linux常用命令——tailf命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tailf 在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出。 补充说明 tailf命令几乎等同于tail -f,严格说来应该与tail --followname更相似些。当文件改名之后它也能继…

微服务注册中心-Eureka

微服务注册中心-Eureka微服务注册中心-Eureka一、注册中心(Eureka)二、Euraka实现1.eureka-server端(1)新建项目,引入pom依赖(2)编写启动类,引入开启注册中心的注解(3&am…

py第八章 面向对象 笔记

8.1类与对象的基础运用类是抽象的,对象是类的实例8.1.1类的定义class 类名:属性名属性值def 方法名(self):方法体类名:大驼峰命名法:首字母一般为大写方法参数列表中的第一个参数是一个指代对象的默认参数selfclass Car:wheels4def drive(self):print(行…

非常好用,绝对未来黑马的 Python 开源测试框架 PySimpleTest

非常好用,绝对未来黑马的 Python 开源测试框架 PySimpleTest 简单介绍 PySimpleTest 是一个非常简洁开源的python代码测试框架,作者是 https://github.com/Time-Coder?tabstars 你可以在以下网站找到PyPI索引:https://pypi.org/project/P…