Spring Boot日志文件

news2024/11/20 12:41:45

 哈喽呀,你好呀,欢迎呀,快来看一下这篇宝藏博客吧~~~

目录

1.日志快速扫盲

2.Spring Boot项目日志简单分析

3.自定义打印日志

4.通过设置日志的级别来筛选和控制日志输出的内容

5.日志持久化


1.日志快速扫盲

什么是日志?说白了就是控制台里面所打印的信息,还记得我们之前写普通java代码时,代码出现bug了之后,我们都是在控制台看出错信息,从而定位到代码出错的地方.控制台里面的一系列信息就是日志.所以日志对于我们来说有一个最关键的作用就是发现问题,定位问题.当然除了发现和定位问题之外,我们还可以通过日志来实现以下功能:

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

也就是说你的一切对程序的操作都会在日志中显示出来.以上这些都是日志提供的非常实用的功能.

2.Spring Boot项目日志简单分析

Spring Boot 项目在启动的时候默认就有日志输出,如下图所示:

 以上内容就是Spring Boot 输出的控制台日志信息.简单分析一下,如下图所示:

通过上述日志信息我们能发现以下3个问题:

  1. Spring Boot内置了日志框架(否则无法输出日志).
  2. 默认情况下,输出的日志不是开发者定义和打印的,也就是是系统自动打印出来的,那开发者怎么在程序中自定义打印日志呢?
  3. 日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?

我们可以带着这几个问题我们来总结一下我们到底要学习关于日志的什么:

  1. 输出自定义日志的信息
  2. 通过设置日志的级别来筛选和控制日志输出的内容
  3. 将日志持久化

3.自定义打印日志

开发者自定义打印日志主要就是以下 2 个实现步骤:

  1. 得到日志对象
  2. 通过日志对象调用相关方法输出要打印的内容
  • 得到日志对象

在程序中获取日志对象需要使用日志工厂LoggerFactory,如下代码所示:

    private static Logger log= LoggerFactory.getLogger(TestController.class);

注意:这里的Logger选用slf4j,如下图:

  • 通过日志对象调用相关方法输出要打印的内容

以上代码的意思是在TestController这个类中得到一个日志对象log,通过log对象就可以实现打印.代码如下:

启动服务器,进行访问,结果如下:

 至此,我们自定义的日志就打印出来了.这个输出语句就带上了它的出处,时间,线程id等. 

PS:如果要打印不同类中的日志,那我们就需要在类中都获取一次日志对象,也就是要再写一次这样的代码:

那有没有更简单的写法呢,答案是肯定的.我们需要添加Lombok的框架支持,添加完了之后直接在当前类上加入@Slf4j这个注解即可,此时我们就可以使用log这个对象去调用它的一些方法了,如下图所示:

4.通过设置日志的级别来筛选和控制日志输出的内容

得到日志对象之后,我们可以调用相关的方法输出我们自定义的日志,我们来看一下以下这段代码:

启动项目,控制台如下:

 看一下结果,是不是觉得有点奇怪,按理说应该会将上述五个都打印出来,但是只打印了3个.为什么呢?这就与日志级别有关了,我们来看一下:

日志级别分为以下几种:

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

日志级别的顺序:

 知道这个日志的级别之后,我们再来思考一下为什么只输出如图所示的三个.原因是SpringBoot的日志默认是info级的,只有等于或高于info级别的日志才能显示出来.也就是说我们改变它的这个默认日志级别就可以对日志进行过滤了.

为什么要对日志加以级别区分呢,很简单,就是为了在不同的环境下得到我们想要的日志信息.比如设置日志级别为 error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者的信息筛选时间。

接下来给大家看一下如何设置日志的级别.

在application.yml配置文件中设置如下:

这样就将日志级别设为debug级的了,也就是大于等于debug的都会被显示出来.我们来运行一下,看一下结果:

 但是还有一点,这些信息确实是被显示出来了,但是还有一些SpringBoot自己的一些debug日志,如果我想过滤掉,只看自己写的,我们可以这样设置:

5.日志持久化

日志是默认在控制台输出的,是保存在内存上的,当我们重新运行项目时,之前的日志就没有了.然⽽在⽣产环境上我们需要将⽇志保存下来,这以便出现问题之后,我们可以追溯问题.就需要我们对日志进行持久化了.

想要将日志持久化,非常简单,只需要在配置文件中指定日志的存储目录或者是指定日志的保存文件名即可,这样Spring Boot会自动将控制台的日志写到相应的目录或文件下了.

  • 配置日志文件的名称:

像这样配置好之后,启动项目时,spring.log这个日志文件就会自动生成在你项目文件的根目录下.这样我们的日志就持久化成功了.当有新的日志生成时,是不会覆盖原来的日志信息的,而是会在后面叠加,如果日志越来越多,导致文件越来越大,别担心,它还会自动拆分的.

  • 配置日志文件的保存路径:

 像这样配置好之后,启动项目时,Spring会自动在你的 D:\java-spring 这个目录下生成一个日志文件,文件名不需要自己命名,它会自己默认生成,如下图:

以上就是日志文件的持久化操作了. 


好啦,到这里就结束啦,咱们下期见,拜拜~~

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

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

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

相关文章

Java学习笔记——Idea集成git

Idea集成git-创建本地仓库-提交代码

深入浅出pom.xml文件

前言 在每一个pom文件的开头都会有这样几行代码 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio…

Spring Boot3.0正式发布及新特性解读

Spring Boot 3.0 正式发布 同时发布更新的还有 2.7.x 和 2.6.x 两条版本线&#xff0c;Spring Boot 是我见过的发版最守时的技术框架之一。 Spring Boot 3.0 现已正式发布&#xff0c;它包含了 12 个月以来 151 个开发者的 5700 多次代码提交。这是自 4.5 年前发布 2.0 以来&a…

Live800:在线客服系统排名是怎么样的?

在线客服系统排名是怎么样的?在线客服系统提供商提供哪些服务?在线客服系统评测要点?这些都是企业很关心的问题,这里进行简要的解答。 在线客服系统排名是怎么样的? 客观来说在线客服系统没有统一的行业标准,因此也没有统一的排名。各在线客服系统厂商各有特色,行业竞争激…

【大数据】python连接并使用redis

文章目录redis安装redis连接python安装redis库conda下载及配置vs连接redisredis使用stringset设置getrange截取append追加内容strlen(key) 字节长度listlpush,rpush赋值lpushx,rpushx只给存在的键值赋值llen 列表个数linsert 在某一个值前或者后插入新值lset 对某一个索引位置赋…

Hive 源码解读 准备篇 Debug 讲解

使用 Hive 执行 HQL 查询时遇到 bug,解决办法无非几种,explain HQL、查看日志、远程 Debug,本文就将详细讲解如何使用 Idea 远程 Debug。 1. Debug 环境准备 下载 Hive 源码包,自行编译一下,建议在 Linux 环境下编译,然后将整个编译好的包全部拷贝到 IDEA 工作目录中并…

软考高级-系统架构设计师-知识点总结(一)架构设计基础

第一部分&#xff0c;架构设计基础。由系统架构设计师概述、计算机与网络基础知识、信息系统基础知识、系统开发基础知识四部分构成。 目录 系统架构设计师概述 系统架构的概念和历史 系统架构设计师的定义 系统架构师具备的能力 计算机与网络基础知识 操作系统基础 操作…

加法扩散模型全部过程推导和实现代码

🍿*★,*:.☆欢迎您/$:*.★* 🍿 add_diff 使用之前的扩散方法(get_image_by_t_cv)总结出来的 get_noise 和 get_x 通过 add_diff 可以得到 通过get_x 带入 两组参数 可以推导出 get_xt_1 使用add_diff(这里要反着用 参考show_add_diff_r) 输入 x noise t t max 可以得到x…

DockeFile的介绍与使用

目录 1. Dockfile是什么 2. Dockerfile的基本组成 2.1 FROM 2.2 MAINTAINER 2.3 RUN 2.4 COPY 2.5 ADD 2.6 EXPOSE 2.7 WORKDIR 2.8 ONBUILD 2.9 USER 2.10 VOLUME 2.11 CMD 2.12 ENTRYPOINT 3. dockerfile示例 3.1 准备 3.2 将该目录上传至linux 3.3 构建镜…

Docker+Jenkins+Gitee+Maven项目配置jdk、maven、gitee等拉取代码并自动构建以及遇到的那些坑

场景 CentOS中使用Docker安装Jenkins&#xff1a; CentOS中使用Docker安装Jenkins_霸道流氓气质的博客-CSDN博客_centos docker jenkins 在上面使用Docker部署起来Jenkins的基础上&#xff0c;怎样拉取SpringBoot项目代码并编译构建。 后台项目的搭建参考如下。 若依前后端…

OpenFeign AutoConfiguration源码解析

本文约2千字&#xff0c;主要知识 OpenFeign的父子容器FeignClient的注册 背景 在使用Spring Cloud时&#xff0c;经常使用OpenFeign 作为远程服务调用的类库&#xff1b;Feign 是一种声明式服务调用组件&#xff0c;它在 RestTemplate 的基础上做了进一步的封装。通过 Feig…

跨平台应用开发进阶(五十)uni-app ios web-view嵌套H5项目白屏问题分析及解决

文章目录一、前言二、问题分析三、解决方案3.1 nvue 页面替代 vue 页面3.2 白屏检测刷新3.2.1 自动刷新3.2.2 手动刷新3.3 总结四、拓展阅读一、前言 应用uni-app框架开发好APP上架使用过程中&#xff0c;发现应用经过长时间由后台切换至前台时&#xff0c;通过webview方式嵌套…

SQL语句(基本)

SELECT 语句的 执行过程&#xff1a; from clause ---> where clause ---> select --->group by ---> having--->order by ---> limit 写法顺序: select col1,... from clause ---> where clause ---> group by ---> having---> order by --->…

“ 请你要发光 而不是被照亮 “

做一个厉害的大人 勇敢地长大 成为会发光的星星 勇音频&#xff1a;00:0003:41 | 01 | 世界不会辜负努力拼搏的人 光明的前途在乌云散去之后 请你一定一定坚持自己 勿忘初心 要做会发光的星星 成为想成为的大人啊 | 02 | 我牵起你的手 你望向我的眼 少了你的懵懂青涩…

总线一:IIC

一、I2C集成电路总线, 多用于主控制器和从器件间的主从通信。 二、适用场景&#xff1a;在小数据量场合使用&#xff0c;传输距离短。 三、IIC是半双工。IIC的物理层&#xff1a;两条总线线路&#xff0c;一条是串行数据线SDA&#xff0c;一条是串行时钟线SCL&#xff0c;当总…

《Python知识手册》更新到V4.1版,快拿走学习

前言 最近&#xff0c;我花了点时间&#xff0c;把《Python知识手册》的部分内容进行了更新&#xff0c;更新后的版本号为 v4.1 版。 python知识手册内容&#xff1a;《Python知识手册》 没有比较完整的覆盖 Python 的基础知识。因此&#xff0c;针对手册的阅读&#xff0c;各…

程序员年底好找工作吗?

到年底了除非必要不要辞职&#xff01;除非必要不要辞职&#xff01;除非必要不要辞职&#xff01; 重要的事情说三遍。 很多老哥问我&#xff1a;工作干不下去了&#xff0c;这会儿辞职找工作合适吗&#xff1f;今天就来为大家解答一下&#xff0c;为什么不要在年底辞职&…

Redis6入门到实战------ 六、Redis_Jedis_测试

1 Jedis所需要的jar包 在pom文件中引入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency>2 连接Redis注意事项 禁用Linux的防火墙&#xff1a;L…

Linux mybash

shell 在了解bash之前 我们要先了解shell Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面…

NoSQL数据库原理与应用综合项目——Neo4j篇

NoSQL数据库原理与应用综合项目——Neo4j篇 文章目录NoSQL数据库原理与应用综合项目——Neo4j篇0、 写在前面1、本地数据或HDFS数据导入到Neo4j2、Neo4j数据库表操作2.1 使用Python连接Neo4j2.2 查询数据2.3 插入数据2.4 修改数据2.5 删除数据3、Windows远程连接Neo4j(Linux)4、…