当前位置: 首页 > news >正文

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

        前段时间公司的同事都过来问我,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流程。所以说有些问题直接去百度,百度回来的未必是你所说的问题,解决问题时应该根据实际情况从源代码动手。

http://www.lryc.cn/news/265203.html

相关文章:

  • 单元测试框架jUnit
  • 微软 Visual Studio 迎来 AI 建议命名功能
  • 【排序算法】C语言实现选择排序与冒泡排序
  • 设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
  • 数据结构之进阶二叉树(二叉搜索树和AVL树、红黑树的实现)超详细解析,附实操图和搜索二叉树的实现过程图
  • SpringIOC之LocaleContext
  • 前端案例—antdDesign的Select多选框组件加上全选功能
  • 个人财务工具、密钥管理平台、在线会计软件、稍后阅读方案 | 开源专题 No.51
  • HBase基础知识(二):HBase集群部署、HBaseShell操作
  • C 标准库 - <time.h>
  • 养老院自助饮水机(字符设备驱动)
  • Jenkins 构建触发器指南
  • 通用的java中部分方式实现List<自定义对象>转为List<Map>
  • Python---静态Web服务器-返回固定页面数据
  • react v-18父组件调用子组件的方法和数据
  • Linux——缓冲区
  • Mac 生成Android签名证书 .keystore文件
  • 电商数仓项目----笔记六(数仓ODS层)
  • rtsp视频在使用unity三维融合播放后的修正
  • 【已解决】解决Springboot项目访问本地图片等静态资源无法访问的问题
  • 运维笔记之centos部署Go-FastDfs
  • C#基础——线程(线程池、线程锁、线程抢占、多线程)
  • C# WPF上位机开发(QT vs WPF)
  • 2-高可用-负载均衡、反向代理
  • STM32 使用ARM仿真器设置
  • 【Java】spring
  • C语言中关于操作符的理解
  • Flutter本地化(国际化)之App名称
  • Redis哨兵源码分析
  • 安装Neo4j