后端打印不了trace等级的日志?-SpringBoot日志打印-Slf4j

在调用log变量的方法来输出日志时,有以上5个级别对应的方法,从不太重要,到非常重要
调用不同的方法,就会输出不同级别的日志。

  • trace:跟踪信息
  • debug:调试信息
  • info:一般信息
  • warn:警告信息
  • error:错误信息

问题:SpringBoot只打印了info等级的日志? 没有trace等级的日志?

在这里插入图片描述

原因:使用了Spring Boot(例如在测试类上添加了@SpringBootTest注解),日志的默认显示级别是info,则只会显示infowarnerror级别的日志,不会显示tracedebug级别的日志。

解决方法

1.首先我们确认使用了工具打印日志
在pom.xml中添加依赖

        <!-- Lombok的依赖项,主要用于简化POJO类的编写 --><!-- 添加了Lombok后,在任何类的声明之前,添加@Slf4j注解,则编译期会自动声明一个名为log的变量,所以,可以在类中通过此变量来输出日志。 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><scope>provided</scope></dependency>

使用前,在任何类的声明之前,添加@Slf4j注解,如下则编译期会自动声明一个名为log的变量

@Slf4j
@SpringBootTest
class SmallApplicationTests {@Testvoid logTest(){int x = 1;int y = 2;System.out.println("x = " + x + ", y = " + y + ", x + y = " + (x + y)); // 传统做法log.trace("111x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.debug("222x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.info("333x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.warn("444x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.error("555x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法}
}

2.配置展示日志等级
在Spring Boot项目中,可以在配置文件(application.properties / application.yml / 相关Profile配置)中配置logging.level.包名属性,以指定某个包下的所有类的默认日志显示级别,此属性的值为5个级别中的某1个。

例如,在application.yml添加配置:

#加载Spring Boot的情况下,日志的默认显示级别是info,只会显示此级别及更加重要的级别的日志info.warn,error
#为了所有日志都现在,包括trace(跟踪日志),debug (调试日志)
#实际尝试有效
logging:level:com.luoyang.small: trace

在这里插入图片描述

或者在application.properties中添加配置

#实际尝试有效
logging.level.com.luoyang.small=TRACE

结果:
在这里插入图片描述

在这里插入图片描述

附加信息

提示: Mybatis框架会生成各Mapper接口的对象,这些对象在执行SQL语句时,也会输出日志。如果想看的traceinfo级别的日志,也需要把日志的显示级别设置为较低的trace级别

日志占位符: 在调用日志的方法时,如果输出的信息中包含变量值,可以使用{}作为占位符,表示此处是一个变量值,然后,通过Object... args依次传入各占位符对应的值,如下:

    @Testvoid logTest(){int x = 1;int y = 2;System.out.println("x = " + x + ", y = " + y + ", x + y = " + (x + y)); // 传统做法log.trace("111x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法}

以上使用日志输出时,不会涉及到字符串的拼接,所以,执行效率会更高。并且,以上方法的第1个参数是字符串常量,是在内存中的字符串常量池中的,也可以一定程度上提高执行效率。

创造价值,乐哉分享!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM调优:参数(学习笔记)

一、jvm的运行参数 标准参数 -help、-version、-D参数 jvm的标准参数&#xff0c;一般都是很稳定的&#xff0c;在未来的JVM版本中不会改变&#xff0c;可以使用java -help 检索出所有的标准参数。 通过以下命令查看&#xff1a; 命令&#xff1a;java -help 可以看到我们经常…

批发订货程序推荐 订货系统哪个好

订货系统是一种企业管理软件&#xff0c;可以让批发商、门店实时掌握客户订单的进度和完成情况&#xff0c;提高企业与客户之间的沟通效率&#xff0c;减少错误&#xff0c;节省时间和成本。因此&#xff0c;目前很多企业会选择订货系统来帮助提高业务效率&#xff0c;但目前市…

51单片机应用从零开始(十一)·数组函数、指针函数

51单片机应用从零开始&#xff08;九&#xff09;数组-CSDN博客 51单片机应用从零开始&#xff08;十&#xff09;指针-CSDN博客 目录 1. 用数组作函数参数控制流水花样 2. 用指针作函数参数控制 P0 口 8 位 LED 流水点亮 1. 用数组作函数参数控制流水花样 要在51单片机中…

SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案

Maven项目的Jar包打包问题-没有主清单属性&&ClassNotFoundException 与 NoClassDefFoundError 文章目录 Maven项目的Jar包打包问题-没有主清单属性&&ClassNotFoundException 与 NoClassDefFoundError1、问题出现1.1、Jar包运行&#xff1a;没有主清单属性解决方…

【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

文章目录 一. kafka kraft 集群介绍1. KRaft架构2. Controller 服务器3. Process Roles4. Quorum Voters5. kraft的工作原理 ing 二. 集群安装1. 安装1.1. 配置1.2. 格式化 2. 启动测试2.1. 启功节点服务2.2. 测试 本文主要介绍了 kafka raft集群架构&#xff1a; 与旧架构的不…

typedef的使用

在C语言中&#xff0c;有一个关键字叫做typedef&#xff0c;有些人对此感到很疑惑。不熟悉此知识的同学都会对编程失去细心&#xff0c;直接劝退&#xff08;因为之前我就是这样&#xff09;。、 因为好不容易认识了C语言中所有的关键字&#xff08;就是类型吧&#xff0c;像啥…

python爬虫学习-批量爬取图片

python爬虫学习-批量爬取图片 爬虫步骤爬取前十页图片到本地根据页码获取网络源码使用xpath解析网页解析网页并下载图片主函数如下 爬取的网站为站长素材&#xff08;仅做学习使用&#xff09; 爬取的目标网站为 https://sc.chinaz.com/tupian/qinglvtupian.html如果爬取多页&…

SpringBoot2—开发实用篇3

目录 整合第三方技术 缓存 SpringBoot内置缓存解决方案 SpringBoot整合Ehcache缓存 SpringBoot整合Redis缓存 SpringBoot整合Memcached缓存 SpringBoot整合jetcache缓存 SpringBoot整合j2cache缓存 任务 Quartz Task 邮件 消息 Java处理消息的标准规范 购物订单…

羊大师解读,血压波动

羊大师解读&#xff0c;血压波动 血压是身体健康的一个重要指标&#xff0c;但有时候我们会发现血压存在着波动的情况。血压波动的原因有很多&#xff0c;包括生活方式、遗传因素、药物影响等等。本文小编羊大师将为大家详细介绍血压波动的原因&#xff0c;以及预防和管理血压…

【教程】源代码加密、防泄密软件

什么是代码混淆&#xff1f; 代码混淆 是一种将应用程序二进制文件转换为功能上等价&#xff0c;但人类难于阅读和理解的行为。在编译 Dart 代码时&#xff0c;混淆会隐藏函数和类的名称&#xff0c;并用其他符号替代每个符号&#xff0c;从而使攻击者难以进行逆向工程。 Flu…

LeetCode刷题--- 二叉树的所有路径

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 【 http://t.csdnimg.cn/yUl2I 】 【C】 【 http://t.csdnimg.cn/6AbpV 】 数据结构与算法 【 http://t.csdnimg.cn/hKh2l 】 前言&…

解决el-table组件中,分页后数据的勾选、回显问题?

问题描述&#xff1a; 1、记录一个弹窗点击确定按钮后&#xff0c;table列表所有勾选的数据信息2、再次打开弹窗&#xff0c;回显勾选所有保存的数据信息3、遇到的bug&#xff1a;切换分页&#xff0c;其他页面勾选的数据丢失&#xff1b;点击确认只保存当前页的数据&#xff1…