首页 > 数据库 >MyBatis-Plus如何关闭SQL日志打印详解

MyBatis-Plus如何关闭SQL日志打印详解

时间:2024-06-04 16:11:43浏览次数:14  
标签:SQL 打印 apache Plus sql MyBatis 日记

前言

前段时间公司的同事都过来问我,hua哥公司的项目出问题了,关闭不了打印sql日记,项目用宝塔自己部署的,磁盘满了才发现大量的打印sql日记,他们百度过都按照网上的配置修改过不起作用,而且在调试时候也及为不方便,大量的红色sql日记输出找不着北。

MyBatis-Plus配置关闭打印SQL日记失效

百度了一圈,基本上都是说配置 org.apache.ibatis.logging.nologging.NoLoggingImpl,配置依然存在打印日记,如下图:

看到上图的配置和打印出来的日记就说失效了?

追本溯源,关闭打印日记是真的失效吗?

 直接从代码下手,找到打印日记的类,是在PerformanceInterceptor类发现打印日记的,如下图:

找到根源了就好办了,查看这是性能分析拦截器,只要是涉及查询,更新,插入的sql都会被拦截下来打印出来?我们顺着这个类继续找,在springboot的配置中找到加载PerformanceInterceptor的方法如图:

找到问题与解决问题 

找到了加载的地方,直接注释代码即可,启动时就不再加载截了。该方法上有个Profile的注解带有1个参数是指定只有在使用dev配置文件时才会生效,我们也可以改变这个名称或者项目用别的配置名称也可以起到不加载的作用。

前台再次查询,发现后台没有也没有打印sql日记了 ,这次正常了。

 我们再来看看org.apache.ibatis.logging.nologging.NoLoggingImpl是怎么回事?

这次我们把org.apache.ibatis.logging.nologging.NoLoggingImpl注释,还原配置使用org.apache.ibatis.logging.stdout.StdOutImpl 配置发现此时又可以打印日记了,也就是说我们原先的配置org.apache.ibatis.logging.nologging.NoLoggingImpl是有效的。

定位打印代码,这里打印用的是System.out.println(s)是白色的,而上面打印用System.err.println(S)是红色的。

总结 

这里的org.apache.ibatis.logging.nologging.NoLoggingImpl失效与使用了PerformanceInterceptor类有关,springboot启动加载配置阶段会加载PerformanceInterceptor拦截器在执行sql时因为被PerformanceInterceptor拦截在该类内部执行查询并打印从而绕过了正常的执行sql流程。所以说有些问题直接去百度,百度回来的未必是你所说的问题,解决问题时应该根据实际情况从源代码动手。

到此这篇关于MyBatis-Plus如何关闭SQL日志打印的文章就介绍到这了,更多相关MyBatis-Plus关闭SQL日志打印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:SQL,打印,apache,Plus,sql,MyBatis,日记
From: https://www.cnblogs.com/csjoz/p/18231028

相关文章

  • MySQL数据库的安装
    MySQL数据库的安装【一】各种数据库的端口MySQL:3306Redis:6379MongoDB:27017Django:8000flask:5000【二】MySQL介绍MySQL是一个开源免费的关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下公司。MySQL最流行的关系型数据库管理系统,在WEB......
  • 数据库初识、介绍、SQL语句的由来(库、表、记录表头、表单)、SQL语句基础(注释以及修
    【一】数据库初识【1】文件存储(1)基于内存保存一开始做员工系统是基于列表或字典(内存)来存储数据(2)文件操作在Python指令中学习文件操作,将一些数据都保存到了本地的文本文件中。因为先前学习了如何搭建TCP的客户端和服务端并且在这之中TCP服务端作为存储服务,TCP客户......
  • 在SQL中,如果你想从某个表的某列中去除所有的单引号(')
    在SQL中,如果你想从某个表的某列中去除所有的单引号('),你可以使用REPLACE函数。REPLACE函数允许你搜索一个字符串中的特定子字符串,并用另一个字符串替换它。假设你有一个名为my_table的表,并且你想从名为my_column的列中去除所有的单引号,你可以使用以下SQL语句:sqlUPDATEmy_table......
  • 配置Mysql允许远程连接
    目录1.开通其他主机使用root登录的权限2.在安装mysql的本机上添加防火墙允许规则,允许33063.补充1.开通其他主机使用root登录的权限在搜索里搜索msyql进入命令行,输入密码;usermysql showtables;显示所有数据库,我们可以看到有一个名为user的表。selectHost,Use......
  • 不使用Debezium,记录PostgreSQL中的数据的数据前后变化
    如果不使用Debezium,可以使用触发器(Trigger)来记录PostgreSQL中的数据的变化。触发器是一种特殊的存储过程,当对表执行INSERT、UPDATE或DELETE操作时,会自动执行触发器中的代码。以下是一个简单的示例,展示了如何使用触发器记录数据的变化:1创建一个用于存储变化记录的表:CREATETABL......
  • SQL注入详解
    一、简介SQL注入漏洞非常复杂,区分各种数据库类型,提交方法,数据类型等注入,同样此类漏洞是WEB安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的二、SQL注入原理1、什么是SQL注入 SQL注入就是指Web应用程序对用户输入的数据合法性没有过滤或者是判断,攻击者可......
  • windows MySql 8免安装初并始化root权限和密码
    安装命令@ECHOOFFif"%1"=="h"gotobeginstartmshtavbscript:createobject("wscript.shell").run("""%~nx0""h",0)(window.close)&&exit:beginfltmc>nul||cd/d%~dp0&&mshtavbscript:......
  • 每日两道练习题-- 带你学会SQL server(获取所有非manager员工当前的薪水情况,对所有员工
    SQLServer在实际场景中的应用非常广泛,以下是一些主要的应用领域:企业级应用:SQLServer具有高度的稳定性、可靠性和安全性,非常适合用于企业级应用。例如,企业资源规划(ERP)系统、客户关系管理(CRM)系统、人力资源管理(HRM)系统等,这些系统都需要处理大量的数据和复杂的业务逻辑,SQLS......
  • Mysql实时数据监听高可用
    一、需求:数据实时监听在项目中有着重要的意义,例如某些项目需要监听数据库的变化,生成对应的元数据块,这个数据块为前端接口提供数据支撑或者数据计算使用,监听到某些数据的变化,及时提醒上游或下游服务等等。如何保证数据监听的高可用?本文用自身项目结构简易阐述,不喜勿喷。二、......
  • postgresql 用户管理
    --创建用户createuserkingron;--修改用户密码alteruserkingronwithpassword'1234';--限制用户的连接数alteruserkingronconnectionlimit1;--设置用户密码过期时间alteruserkingronvaliduntil'2024-2-2';--密码永不过期alteruserkingronvali......