【浅学Java】SpringBoot 日志文件

news2024/11/15 16:46:38

SpringBoot 日志文件

  • 1. 认识日志文件
    • 1.1. 日志文件有什么用?
    • 1.2 日志文件的格式
  • 2. 自定义日志文件的打印
  • 3. 日志的持久化
    • 3.0 什么时日志持久化
    • 3.1 设置日志名称
    • 3.2 设置日志目录
    • 3.3 持久化日志的特点
  • 4. 日志的级别
  • 5. 设置“日志级别”来筛选日志
  • 6. 简化日志打印——lombok
    • 6.1 添加lombok依赖
    • 6.2 使⽤ @slf4j 注解输出⽇志
    • 6.3 lombok原理解释

1. 认识日志文件

1.1. 日志文件有什么用?

日志就是我们在运行SpringBoot时,控制台上打印出来的如下内容:
在这里插入图片描述
它是用来发现程序在运行时的错误

1.2 日志文件的格式

在这里插入图片描述

2. 自定义日志文件的打印

实现步骤:

  1. 得到日志对象
  2. 通过设置日志级别来筛选和控制日志内容
@RestController
public class TestController {
    //1.得到日志对象
    private static Logger log = LoggerFactory.getLogger(TestController.class);
    @RequestMapping("/hi")
    public String sayhi(){
        log.info("Hi,Spring Boot Log!");
        return "打印成功";
    }
}

运行程序:
在这里插入图片描述

注意:在选择Logger 和 LoggerFactory时,都选择s l f 4 j:
在这里插入图片描述

那么为什么要选择slf4j呢?
因为 Spring Boot 中内置了⽇志框架 Slf4j,所以咱们可以直接在程序中调⽤slf4j来输出日志。

3. 日志的持久化

3.0 什么时日志持久化

在⽣产环境上咱们需要将⽇志保存下来,以便出现问题之后追
溯问题,把⽇志保存下来的过程就叫做持久化。

持久化日志会有两种方式:

  1. 通过设置日志名称
  2. 通过设置日志目录

3.1 设置日志名称

配置文件:

# 日志的保存名称
logging:
  file:
    name: springboot.log

运行程序,就会创建一个log文件:
在这里插入图片描述

如果没有创建的话,就先删除掉项目目录下的target包,重新运行一遍:
在这里插入图片描述

3.2 设置日志目录

配置文件:

# 日志的保存目录
logging:
  file:
    path: C:\work\

运行程序,就在C:\work\创建一个spring.log文件:
在这里插入图片描述

3.3 持久化日志的特点

  1. 日志不会丢失,会一直追加
  2. 当日志较大时,会自动分割成多个文件(随着日志的增多,打开一个大的文件比较费时)

4. 日志的级别

日志级别分为:

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

在这里插入图片描述
设置日志级别的目的就是筛选日志,当设置日志级别为info时,控制台上面就不会打印debug和trace级别的日志。也就是不会打印比设置的日志级别低的日志。

5. 设置“日志级别”来筛选日志

通过配置文件来设置日志级别:

logging:
  level:
    root: error  //日志级别设置文error

测试代码:

@RestController
public class TestController {
    //1.得到日志对象
    private static Logger log = LoggerFactory.getLogger(TestController.class);
    @RequestMapping("/hi")
    public String sayhi(){
        //打印日志
        log.trace("hi,i am trace");
        log.debug("hi,i am debug");
        log.info("hi,i am info");
        log.warn("hi,i am warn");
        log.error("hi,i am error");
        return "打印成功";
    }
}

运行程序,结果:

控制台打印的日志里面只有级别 >= error的.

当然,特可以精细化设置日志级别:
在这里插入图片描述

6. 简化日志打印——lombok

每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,也很麻烦,这⾥讲⼀种更好⽤的⽇志输出⽅式,使⽤ lombok 来更简单的输出,具体步骤如下:

  1. 添加 lombok 框架⽀持。
  2. 使⽤ @slf4j 注解输出⽇志。

6.1 添加lombok依赖

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.20</version>
	<optional>true</optional>
</dependency>

6.2 使⽤ @slf4j 注解输出⽇志

@slf4j 就是lombok框架下面的一个注解,作用就是添加一个名为log的日志对象

@RestController
@Slf4j
public class TestController {
    @RequestMapping("/hi")
    public String sayhi(){
        //打印日志
        log.trace("hi,i am trace");
        log.debug("hi,i am debug");
        log.info("hi,i am info");
        log.warn("hi,i am warn");
        log.error("hi,i am error");
        return "打印成功";
    }
}

注意:使⽤ @Slf4j 注解,在程序中使⽤ log 对象即可输⼊⽇志,并且只能使⽤ log 对象才能输出,这是 lombok 提供的对象名

6.3 lombok原理解释

Lombok 的作⽤如下图所示:
在这里插入图片描述
即自动给他加上如下代码:
在这里插入图片描述
我们为可以在target里面看一下源代码的字节码,进而验证上述观点:
在这里插入图片描述
在之前用到的@Data,也是属于lombok注解,要想使用更多的lombok注解,可以在网上搜一下,然后放心使用就行。

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

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

相关文章

量子计算(十二):量子线路与测量操作

文章目录 量子线路与测量操作​​​​​​​ 量子线路与测量操作​​​​​​​ 量子线路是由代表量子比特演化的路线和作用在量子比特上的量子逻辑门组成的。量子线路产生的效果&#xff0c;等同于每一个量子逻辑门依次作用在量子比特上。在真实的量子计算机上&#xff0c;最…

HTML CSS游戏官网网页模板 仿绝地求生吃鸡游戏网站 大学生游戏介绍网站毕业设计 DW游戏主题网页模板下载

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

[附源码]Python计算机毕业设计Django影院管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

使用yum info查看软件包信息与常用软件包

记录&#xff1a;357 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;使用yum info查看软件包信息&#xff0c;包括软件包名称、适用架构、版本号、发行版、软件大小、仓库名称、概要、URL、许可证、描述。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 1.iptabl…

【现代机器人学】学习笔记三:前向运动学(Forward Kinematics)

这节的内容比较简单&#xff0c;主要配合习题来看。 在掌握方法以后&#xff0c;对常规的有许多移动副或转动副结构组成的机械臂&#xff0c;计算正向运动学则非常简单。 齐次变换法&#xff1a; 这种方法的特点是&#xff0c;只研究当前关节和上一个关节的旋转平移&#xf…

供应商关系管理与企业内容管理 (ECM) 相结合,帮助解决采购存在的五个关键挑战

供应商关系管理与企业内容管理 &#xff08;ECM&#xff09; 相结合&#xff0c;帮助解决采购存在的五个关键挑战 采购过程包括将制造需求转化为供应商需求、如何管理供应商关系、以及生产产品所需的商品和服务的订购。 领先的制造、制药、食品和自然资源组织正在意识到&#…

【性能优化】pc端与移动端图片性能优化

目录 优化方向 优化方式 1.域名收敛 2.使用CDN节点 3.设置缓存 4.图片懒加载 5.用户图片上传限制 6.使用OSS服务压缩 7.使用OSS缩放 8.合成雪碧图 9.使用svg图片 在前端项目中图片的性能优化也有不少可以提升的地方&#xff0c;那么有哪些性能优化的点呢&#xff1f…

[附源码]Python计算机毕业设计Django游戏交易平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

NEMUCOD病毒jse样本分析

该病毒使用微软的JScript编写&#xff0c;能够直接运行在Windows操作系统之上&#xff0c;采用了加密和混淆手段对抗监测&#xff0c;可检测是否运行在虚拟机中和系统中是否存在分析工具&#xff0c;可感染可移动存储介质&#xff0c;主要功能为下载器。CC服务器为185.159.82.1…

牛客网刷题【BC114\BC123\BC125\BC13\BC93\BC95】

目录 一、BC114 小乐乐排电梯 二、BC123 小乐乐找最大数 三、BC125 小乐乐转换成绩 四、BC13 ASCII码 五、BC93 统计数据正负个数 六、BC95 最高分与最低分之差 一、BC114 小乐乐排电梯 #include <stdio.h>int main() {int n0;scanf("%d",&n…

Aspose.Words 22.12.0 for NET cRACK

.NET API 来处理 Word 文件 无需使用外部软件即可创建、编辑、呈现 Word 文档并将其转换为多种格式。您还可以生成报告以可视化数据。 .NET 的 Aspose.Words Aspose.Words for .NET 是一种高级文档处理 API&#xff0c;可对各种文件格式执行广泛的管理和操作任务。API 支持…

(文章复现)5.基于BP神经网络的风电功率预测方法(MATLAB程序)

联系方式&#xff1a;2645521500 复现文章&#xff1a; 基于BP神经网络的风电功率预测方法——刘立群&#xff08;2021年&#xff09; 摘要&#xff1a; 风电功率预测结果的准确性&#xff0c;不仅关系到风力发电厂的综合运行效率&#xff0c;也与区域运行成本具备直接联系…

Java面试-MySQL事务专题

链接&#xff1a;https://pan.baidu.com/s/1mw4sej8BzdHNCkaib4ebeg 提取码&#xff1a;j2qu 1 事务的四个特点是什么&#xff1f;他们是如何实现的&#xff1f; ACID-原子性、一致性、隔离性和持久性。 ACID原理原子性undolog一致性通过其他三个特性来实现的隔离性锁MVCC持…

java计算机毕业设计ssm校园志愿者服务系统u7thd(附源码、数据库)

java计算机毕业设计ssm校园志愿者服务系统u7thd&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xf…

初学者必刷题---PTA基础编程题目集第一期

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;初学者必刷题—鹏哥推荐 &#x1f4ac;总结&#xff1a;希望…

STC 51单片机62—— Proteus仿真多位数码管稳定显示 不抖动

#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //uchar code dis_code[]{0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9}; //共阳数码管段码表 //共阴字形码表【实验】数码管实验时&#xff0c;一定要将点阵模块跳…

玩转系统|如何Windows Update自动更新

目录 为什么要关闭Windows自动更新&#xff1f; 1、防止在工作时间突然中断计算机。 2、应用程序兼容性变差。 可能会导致系统损坏。 关闭Windows自动更新的几种方法&#xff01; 方法一&#xff1a;通过Windows设置关闭Windows自动更新 方法二&#xff1a;通过组策略编…

如何查看浏览器页面缓存内容(代码控制台)【详细教程】

如何查看浏览器页面缓存内容——代码&控制台知识调用前言引入控制台输入代码查看在控制台application查看知识调用 文章可能需要用到的知识&#x1f525;&#x1f525;&#x1f525;浏览器缓存有哪些&#xff08;通用缓存有哪些&#xff09; 前言引入 浏览器有多种缓存&a…

密码重置、API调用、远程命令,Zabbix用户必知的几个技巧

作者&#xff1a;张思德&#xff0c;Zabbix社区签约专家&#xff0c;2017-2022Zabbix中国峰会讲师 前言 Zabbix版本迭代很快&#xff0c;而且每个版本都会有很多新特性&#xff0c;有时有一个不起眼的小的更新却造成很多老司机翻车&#xff0c;以下主要介绍Zabbix几个常见的知识…

3.1.1 积分和微分放大器

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…