【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

这篇具有很好参考价值的文章主要介绍了【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:
大家好,我是良辰丫,在上一篇文章中我们已经学习了Spring Boot的配置,接下来我们要学习一些日志相关的东西,什么是日志呢?我们慢慢往下看.💌💌💌

🧑个人主页:良辰针不戳
📖所属专栏:javaEE进阶篇之框架学习
🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
💦期待大家三连,关注,点赞,收藏。
💌作者能力有限,可能也会出错,欢迎大家指正。
💞愿与君为伴,共探Java汪洋大海。

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

1. 初识日志

什么是日志呢?

  • 日志 相当于我们自己写的日记,记录自己的真实生活所发生的事情.
  • 在计算机中,日志 是我们程序(或者系统)写的日记,记录系统运行过程中各种重要信息的文件,在系统运行过程中由各进程创建并记录。
  • 简单来说,日志就是记录时间以及各种进程或者线程发生的数据的文件,比如错误信息,修改信息等.

日志有什么作用呢?

  • 记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。也就是服务器通过日志可以有效地减少用户恶意破解登录,有效的保障了用户的安全.
  • 记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。程序有问题,我们可以通过日志快速的定位,并且进行相应的操作去修改错误.
  • 记录程序的执⾏时间,⽅便为以后优化程序提供数据支持。通过时间我们可以知道哪个时间段程序(系统)做了什么.
  • 简而言之,记录系统的运行过程及异常信息,为快速定位系统运行中出现的问题及开发过程中的程序调试问题提供详细信息(也就是快速找到错误原因)。

2. Spring Boot的日志

在我们的Spring Boot的控制台上其实就有日志信息.

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

  • Spring Boot 内置了⽇志框架, 控制台上自行的打印自己的日志信息.
  • 了解了Spring Boot 控制台的日志后,接下来我们来一起去学习程序员如何定义日志并且去使用日志.

3. 自定义日志

  • 得到日志对象.
  • 打印日志内容.

完整代码:

package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ResponseBody;

@RequestMapping("/user5")
@Controller
@ResponseBody // 用来设置当前类中所有的方法返回的是数据而非页面

public class User5 {
    // 1.得到日志对象
    private static final Logger logger = LoggerFactory.getLogger(User5.class);

    @RequestMapping("/log")
    public String sayHi() {
        // 写日志
        logger.trace("我是 trace");
        logger.debug("我是 debug");
        logger.info("我是 info");
        logger.warn("我是 warn");
        logger.error("我是 error");
        System.out.println("日志打印完成.");
        return "Hi,叶良辰.";
    }
}

3.1 得到日志对象

  • 注意代码中好多东西都是规定哈,没有什么为什么,比如使用LoggerFactory,大家多写几次,熟悉就行了.
  • 为了定位我们的日志属于哪个类,我们需要把类名传进去.
  • 很多人会因为导错包而会出现没有找到该关键字的错误,我们要导入的包是org.slf4j.
// 1.得到日志对象
    private static final Logger logger = LoggerFactory.getLogger(User5.class);

3.2 打印日志内容

日志内容有很多种,我们先来采取几种看一下效果.


    @RequestMapping("/log")
    public String sayHi() {
        // 写日志
        logger.trace("我是 trace");
        logger.debug("我是 debug");
        logger.info("我是 info");
        logger.warn("我是 warn");
        logger.error("我是 error");
        System.out.println("日志打印完成.");
        return "Hi,叶良辰.";
    }
  • 我们需要重启服务器,也就是Spring Boot.
  • 通过浏览器访问我们的页面,一定要进行访问,要不然控制台不会出现我们的日志信息,为什么我的端口号是8888呢,在上一篇配置文件的文章中,我们为了说明端口配置,把端口号改成了8888.
    【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

运行结果如下:

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

  • 在这个时候,我们发现问题了,我们有5个日志,为什么打印出3个呢?
  • 我们在代码中有一条"日志打印完成"的输出语句,就是为了表示日志打印完成了,在我们的控制台上已经打印出来了该语句,那么说明打印已经完成,为什么日志没有全部打印呢?
  • 原来呀,我们的日志是有一定的级别的,具体怎么回事呢?别着急,我们在了解日志级别之前,先来了解一些日志相关的东西.

3.3 日志格式

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

  • 日志打印时间 : 记录日志的时间.
  • 日志打印级别,在下面我们会进行介绍.
  • 线程ID,日志往往是通过线程负责的,在这里,咱们的线程是Spring Boot分配的,每次运行分配的线程一般是不同的.
  • 线程名称,这里指的是系统对线程的命名.
  • 执行的类名,表示该日志是打印哪个类的日志信息.
  • 日志信息,程序员定义的,用来表示日志数据.

3.4 简述日志框架

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

  • Spring Boot在设计日志框架的时候采取了门面模式,这是一种设计模式.但是23种设计模式中没有门面模式,因为门面模式是最后出来的.
  • 门面模式的主要作用是解耦,Spring Boot内置了日志框架,程序员在使用的时候只需要调用slf4j就可以了,slf4j这相当于一个中介,它负责处理细节,我们使用的时候只需要去调用它即可,不需要关注它的细节.

4. 日志级别

4.1 日志级别的作用

学习日志级别,首先我们需要去了解日志级别的作用.

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

4.2 日志级别分类

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

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

4.3 日志级别使用规则

  • 当程序中设置了日志级别后,那么程序只会打印和级别相同或者大于当前几倍的日志,小于当前级别的日志不会输出
  • Spring Boot的默认级别是info.咱们在上面打印出三条日志信息,大于等于info的日志才会被打印出来,大于等于info级别的有三个,因此打印三条.

在yml中设置日志级别,我们设置一个trace级别,重启服务器,重新访问页面.

# 配置日志级别
logging:
  level:
    root: trace

运行结果:

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?
此时,我们的五条日志信息全部打印出来了.

5. 日志持久化

  • 在上述我们的日志只是短暂的存储,重启服务器就会消失,我们需要把日志持久化存储,才能方便我们随时查看,因此呢,我们需要把日志存储在文件中.
  • 以上的⽇志都是输出在控制台上的,然⽽在⽣产环境上咱们需要将⽇志保存下来,以便出现问题之后追溯问题,把⽇志保存下来的过程就叫做持久化

5.1 配置日志文件路径

# 设置⽇志⽂件的⽬录
logging:
  file:
    path: D:\\aaa

5.2 配置日志文件名称

logging:
  file:
    name: D:\\aaa\\log.log

注意一级标签一个yml文件往往只能写一次,什么意思呢?通过下图大家可以得出,这是yml专门这样设置的.减少冗余度,两条归属于同一个一级标签,直接写到一个一级标签下面即可.

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

两块代码合并如下:

logging:
  file:
    path: D:\\aaa
    name: D:\\aaa\\log.log

重启服务器,在我们的相应目录下自动生成我们的日志文件.

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?
以记事本的形式打开,就是我们的日志信息了.

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

我们也可以根据不同的日志级别

logging:
  file:
  	path: D:\\aaa
    name: springboot-log.log
  level:
    root: error
    com:
      example:
        demo:
          controller: error
          service: info

6. Lombok 日志输出

Lombok是我们在java中经常使用的东西,大家一定要去掌握常见的东西.

  1. pom.xml中添加Lombok依赖
<dependency>
<groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.20</version>
 <optional>true</optional>
</dependency>
  1. @Slf4j注解控制日志

使⽤ @Slf4j 注解,在程序中使⽤ log 对象即可输⼊⽇志,并且只能使⽤ log 对象才能输出,
这是 lombok 提供的对象名,人家规定的,还是那句话,没有那么多为什么哈哈!!!

package com.example.demo;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@RequestMapping("/user6")
@Controller
@ResponseBody // 用来设置当前类中所有的方法返回的是数据而非页面
@Slf4j
public class User6 {
    @RequestMapping("/log")
    public String sayHi() {
        // 写日志
        log.trace("我是 trace");
        log.debug("我是 debug");
        log.info("我是 info");
        log.warn("我是 warn");
        log.error("我是 error");
        System.out.println("日志打印完成.");
        return "Hi,叶良辰.";
    }
}

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

通过浏览器进行访问页面,仍然能得到我们的日志信息.

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

我们的日志文件中也会存在日志信息:

【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?文章来源地址https://www.toymoban.com/news/detail-475944.html

到了这里,关于【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaEE】Spring Boot - 日志文件

    【JavaEE】Spring Boot 开发要点总结(3) 写代码不是概率事件,bug的出现必然是有原因的,而日志的主要作用就是,排查和定位问题! 而日志的生成就是随着程序的进行和一步步生成的,不说全部过程都记录得清清楚楚,至少重要的点和环节或者一些异常情况都有记录 而通过日

    2024年02月14日
    浏览(51)
  • Spring Boot配置保存日志文件

    springboot日志配置: springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的。 一、使用xml配置日志保存(并不需要pom配置slf4j依赖,starter里面已经配置了依赖了) 1、在项目的resources目录下创建一个【logback-spring.xml】日志配置文件

    2024年02月11日
    浏览(45)
  • Spring Boot 配置文件和日志

    目录 配置文件格式 properties配置文件说明 1.properties基本语法 2.读取配置文件 3.properties缺点 yml配置文件说明 1.yml基本语法 2.配置不同数据类型 3.字符串特殊情况 4.配置对象 properties和yml对比 日志 日志的使用 日志级别 日志持久化 Lombok Lombok原理解释 Spring中配置文件有很重要的

    2024年01月19日
    浏览(59)
  • Spring Boot配置文件及日志信息

    目录 前言: Spring Boot优点 配置文件 配置文件格式 读取配置文件 properties配置文件格式 properties优缺点分析 yml配置文件格式(另一种标记语言) yml优缺点分析 Spring Boot 不同平台配置文件规则 日志信息 日志的功能 Spring Boot内置日志框架 使用日志 得到日志对象 打印日志 日志

    2024年02月01日
    浏览(63)
  • Spring Boot日志系统大揭秘:从零开始学习Spring Boot日志:常见问题解答和最佳实践

    Spring Boot 日志机制和工具用于记录应用程序的日志信息和追踪应用程序的执行过程。它集成了常用的日志框架,如 Log4j、logback、Java Util Logging等,并提供简单易用的配置方式,让开发人员可以方便地监控应用程序的运行状态和性能。在项目启动时,日志已经开始输出,但尚未

    2024年02月08日
    浏览(63)
  • Java EE 突击 9 - Spring Boot 日志文件

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月13日
    浏览(51)
  • 忽视日志吃大亏,手把手教你学习Spring Boot日志

    从零开始,手把手教你搭建Spring Boot后台工程并说明 Spring框架与SpringBoot的关联与区别 SpringBean生成流程详解 —— 由浅入深(附超精细流程图) Spring监听器用法与原理详解 Spring事务畅谈 —— 由浅入深彻底弄懂 @Transactional注解 日志搞不定?手把手教你如何使用Log4j2 不知有多少人

    2024年02月12日
    浏览(34)
  • Spring Boot 集成 WebSocket 实例 | 前端持续打印远程日志文件更新内容(模拟 tail 命令)

    这个是我在 CSDN 的第一百篇原则博文,留念😎 先说下项目结构,后端基于 Spring Boot 3,前端为 node.js 开发的控制台程序。现在希望能够在前端模拟 tail 命令,持续输出后端的日志文件。 这个方案实施较为简单,通过前端不断(定时)发起请求,并携带已读的内容坐标(posi

    2024年03月18日
    浏览(46)
  • 【Spring Boot 源码学习】ConditionEvaluationReport 日志记录上下文初始化器

    《Spring Boot 源码学习系列》 上篇博文《共享 MetadataReaderFactory 上下文初始化器》, Huazie 带大家详细分析了 SharedMetadataReaderFactoryContextInitializer 。而在 spring-boot-autoconfigure 子模块中预置的上下文初始化器中,除了共享 MetadataReaderFactory 上下文初始化器,还有一个尚未分析。 那么

    2024年04月13日
    浏览(43)
  • Spring Boot学习随笔- 本地化测试(@SpringBootTest)、热部署(spring-boot-devtools)、日志Logback常用级别使用、指定包级别输出

    学习视频:【编程不良人】2021年SpringBoot最新最全教程 频繁启动服务器进行功能的访问非常繁琐、SpringBoot给我们提供了用于测试的依赖,自动集成Junit,使用了这个以来后,test包在打包时不会被打包进去 @SpringBootTest注解 修饰在类上,用来启动本地Spring环境 作用 热部署是指

    2024年02月05日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包