SpringBoot——日志文件

news2024/11/17 21:27:26

基本概念

日志文件记录了程序的报错信息,执行时间,用户的登录状态,操作时间等等
通过日志,我们可以轻松的找到程序的问题,得到程序的相关信息
在这里插入图片描述
springBoot启动时控制台打印的这些,就是程序的日志

创建日志

首先创建日志对象

private static final Logger logger = LoggerFactory.getLogger(类名.class);

注意:Logger是在slf4j包下
SLF4J使用的是门面模式,也就是说我们调用SLF4J的方法,SLF4J会帮我们取调用log底层的方法

使用类对象的下面几种不同的方法,就可以打印不同种类的日志

logger.trace("this is trace");
logger.debug("this is debug");
logger.info("this is info");
logger.warn("this is warn");
logger.error("this is error");

例如,创建一个StudentController类

@Controller
@ResponseBody //表示当前类返回的是数据而不是页面
@RequestMapping("/user")
public class UserController {
    //得到日志对象
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    @RequestMapping("/hi")
    public String sayHi(){
        logger.trace("this is trace");
        logger.debug("this is debug");
        logger.info("this is info");
        logger.warn("this is warn");
        logger.error("this is error");
        return "Hi,SpringBoot";
    }
}

在浏览器中访问http://127.0.0.1:8080/user/hi后,控制台就会出现相关日志
在这里插入图片描述
详细含义如下:
在这里插入图片描述
其中,我们调用的logger的不同的方法就对应了日志的不同级别,具体如下

日志级别

  • trace: 微量
  • debug:需要调试时,可以打印关键信息
  • info:普通的打印信息
  • warn:警告,不影响使用,但需要注意的信息
  • error:错误,级别较高的错误信息
  • fatal:致命,代码异常导致程序退出

从上到下,日志的级别越来越高,打印的信息越来越严重

可以在配置文件中设置日志级别,例如设置warn,就只会打印warn以上级别的日志了:warn,error,fatal

默认的级别是info
配置文件:

logging:
  level:
    root: warn

root代表所有文件都设置为warn级别

可以看到,打印的信息只剩下这些了
在这里插入图片描述
并且,可以根据不同的包设置不同的日志级别

logging:
  level:
    root: error
    com:
      example:
        controller: trace
        service: debug

日志持久化

在生产环境上是没有控制台的,因此需要将日志保存下来,也就是日志持久化
在配置文件中加上保存路径

logging:
	file:
		path: 保存路径

或者使用路径加保存文件名:

logging:
	file:
		name: 保存名称

例如:

logging:
  file:
    name: /Users/lixiao/Desktop/SpringBoot-log.log

在这里插入图片描述
在这里插入图片描述

使用lombok进行日志输出

之前的博客:Spring——Bean的作用域和生命周期,介绍过lombok的用途,接下来介绍如何使用lombok更简单的进行日志的输出

引入依赖

在之前博客的springboot项目的创建时,就选择了lombok依赖

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

如果springboot没有添加lombok,可以下载这个插件
在这里插入图片描述
之后,在pom文件中右键,点击generate
在这里插入图片描述
使用edit starter
在这里插入图片描述
就可以像创建springboot一样,引入我们需要的依赖了
在这里插入图片描述

使用lombok

直接在类名上添加@Slf4j注解,即可使用log对象

例如:

@Controller
@ResponseBody
@RequestMapping("/article")
@Slf4j
public class ArticleController {
    @RequestMapping("/hi")
    public String sayHi(){
        log.error("test slf4j");
        return  "hi article controller";
    }
}

也就是说,@Slf4j代替了创建logger对象的过程
也就是这一步

private static final Logger logger = LoggerFactory.getLogger(ArticleController.class);

lombok的原理在于,肉眼上使用注解替代了创建日志对象的代码,而事实上底层字节码文件中,还是需要创建日志对象

可以查看target目录中的ArticleController
在这里插入图片描述

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

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

相关文章

Kafka报错:Controller 219 epoch 110 failed to change state for partition

集群里面kafka报错&#xff1a;Controller 219 epoch 110 failed to change state for partition maxwell_atlas-0 from OfflinePartition to OnlinePartitionkafka.common.stateChangeFailedException: Failed to elect leader for partition maxwell_atlas-0 under strategy …

SpringWeb

SpringWeb 概述 springWeb 是 spring 框架的一个模块&#xff0c;springWeb 和 spring 无需通过中间整 合层进行整合。 springWeb 是一个基于 mvc 的 web 框架,方便前后端数据的传输. SpringWeb 拥有控制器&#xff0c;接收外部请求&#xff0c;解析参数传给服务层. SpringM…

盘点界面组件DevExtreme 2023年值得期待的一些新功能!

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序&#xff0c;该套件附带功能齐…

一文学会进程控制

目录进程的诞生fork函数fork的本质fork的常规用法fork调用失败的原因进程的死亡进程退出的场景常见的进程退出方法正常终止&#xff08;代码跑完&#xff09;echo $?main函数返回调用exit调用_exitexit和_exit的区别进程等待进程等待的重要性进程等待的函数waitwaitpid进程退出…

uniapp中条件编译

官方&#xff1a;https://uniapp.dcloud.net.cn/tutorial/platform.html#%E8%B7%A8%E7%AB%AF%E5%85%BC%E5%AE%B9 #ifndef H5 代码段… #endif 表示除了H5其他都可以编译 #ifdef H5 代码段… #endef 表示只能编译H5&#xff0c;其他的都不能编译 其他编译平台请查看官方文档。 …

连接器产业深度分析报告,国产化替代如何突出重围?(附厂商名录)

前言 2022年3-4月&#xff0c;上海疫情的封城举措&#xff0c;使得其它地区连接器类产品难以进入上海产业链&#xff0c;车载连接器的终端供应受阻&#xff0c;最终影响到全国多家车企生产&#xff1b; 同年12月&#xff0c;欧洲理事会批准—2024年12月28日之前&#xff0c;各类…

MySQL数据库调优————索引调优技巧

长字段的索引调优 当某张表需要给一个长字段创建索引时&#xff0c;因为索引长度越长&#xff0c;效率越差&#xff0c;所以我们需要对其进行优化。 创建额外的长字段的Hash值列 当长字段需要创建索引时&#xff0c;我们可以为其创建额外的一列&#xff0c;用其Hash值作为值…

如何利用Power Virtual Agents机器人实现成绩查询服务

今天我们继续介绍如何利用Power Virtual Agents来实现成绩查询服务。设计思路是在PVA聊天机器人的对话框中输入学生的姓名和学号来进行成绩的查询。首先&#xff0c;在Microsoft 365的OneDrive中制作一个Excel格式的成绩单。 可以将学生的学号、姓名、各学科成绩进行添加。 在P…

【初探人工智能】2、雏形开始长成

【初探人工智能】2、雏形开始长成【初探人工智能】2、雏形开始长成安装Flask封装Web接口雏形设置接收参数功能验证聊天写代码代码补全生成图片写在后面笔者初次接触人工智能领域&#xff0c;文章中错误的地方还望各位大佬指正&#xff01; 【初探人工智能】2、雏形开始长成 在…

限时活动|凭徽章领披萨大奖,玩转Moonbeam治理论坛

动动手指&#xff0c;无需每天打卡&#xff0c;用刷手机的零碎时间领一份Web3惊喜&#xff01; 本次挑战的目标是鼓励大家参与社区治理、熟悉论坛操作。有关参与方式和原因的信息在Twitter上共享&#xff1a;有兴趣可以和ThinkWildCrypto一起探索论坛以解锁其功能、了解最近和正…

【虹科干货】如何有效运用虹科任意波形发生器工作模式?

图 1&#xff1a;显示从存储器到输出的数据路径的 AWG 概念框图 01引言 任意波形发生器 (AWG) 的强大功能之一是它们可以生成几乎无限数量的波形。 AWG 的工作模式控制这些波形输出方式的时序。 在本应用说明中&#xff0c;我们将研究虹科Spectrum M4i.66xx 系列 AWG 工作模式…

JVM的GC机制和常见GC算法

文章目录[toc]1. 堆内存的分代2. GC分类3. 什么是GC3.1 需要GC的内存区域3.2 GC回收的对象3.3 判断对象存活的两种算法3.3.1 引用计数3.3.2 可达性分析3.4 什么时候触发GC4. 常见的GC算法4.1 标记-清除算法4.2 复制算法4.3 标记-压缩算法1. 堆内存的分代 堆中内存分为新生代和老…

String类 [上]

一、编码的基础介绍 编码&#xff1a;是信息从一种形式或格式转换为另一种形式的过程。 ASCLL 编码表:主要表示的是英文的编码表 Unicode&#xff1a;是为了解决传统的字符编码方案的局限而产生的&#xff0c;它为每种语言中的每个字符设定了统一并且唯一的二进制编码二进制编码…

小白式linux系统怎么安装宝塔面板

有很多小白同学问我linux系统服务器怎么远程连接。那么今天我们重点来教教大家如何用电脑远程服务器配上图文教程&#xff0c;让不懂的新手小白一看就会&#xff0c;分分钟上手教程怎么安装宝塔面板&#xff1f;这个其实很简单接下来跟着我操作。以linux centos7.6 举例Centos安…

[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)

2.1 前驱图和程序执行 2.1.1 前驱图 前驱图是指一个有向无循环图可记为DAG前驱图用于描述进程之间执行的先后顺序。前驱图的每个节点用来表示一个进程或程序段乃至一条语句节点间的有向边表示两个节点之间存在的偏序或前驱关系。进程或程序之间的前驱关系可用→来表示。如果进…

有了这些接口测试用例+工具,测试效率想不提升都难

写在前面&#xff1a;在日常开发过程中&#xff0c;有人做前端开发&#xff0c;有人负责后端开发。接口的主要作用就是连接前后台。但是&#xff0c;由于前端和后端开发的速度可能不一样&#xff0c;尤其是后端开发好了&#xff0c;但前端还未开发。这种时候我们需要做接口测试…

【原创】java+swing+mysql银行ATM管理系统

本文主要介绍使用javaswingmysql去设计一个银行ATM管理系统&#xff0c;模仿实现存款、取款、转账、余额查询等功能。 功能分析&#xff1a; 隐含ATM管理系统一般分为管理员和用户角色&#xff0c;管理员可以进行用户管理、账单管理&#xff0c;用户可以进行转取存款等功能如…

面试不到10分钟就被赶出来了,问的实在是太变态了...

干了两年外包&#xff0c;本来想出来正儿八经找个互联网公司上班&#xff0c;没想到算法死在另一家厂子。 自从加入这家外包公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到11月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资…

深度学习网络模型——ConvNeXt网络详解、ConvNeXt网络训练花分类数据集整体项目实现

深度学习网络模型——ConvNeXt网络详解、ConvNeXt网络训练花分类数据集整体项目实现1、介绍2、设计方案3、Macro design4、ResNeXt-ify5、Inverted Bottleneck7、Large Kernel Sizes8、Micro Design9、ConvNeXt variants10、ConvNeXt-T 结构图11、网络代码实现&#xff1a;Conv…

内网渗透(三十五)之横向移动篇-IPC配合系统服务横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…