springboot mybatis-plus慢sql输出日志,log4jdbc使用

news2024/12/25 12:56:03

前言

无论使用原生JDBC、mybatis还是hibernate,使用log4j等日志框架可以看到生成的SQL,但是占位符和参数总是分开打印的,不便于分析,显示如下的效果:
在这里插入图片描述
在这里插入图片描述

Log4jdbc 是一个开源 SQL 日志框架,它使用代理模式实现对常用的 JDBC Driver( Oracle , Derby , MySQL , PostgreSQL , H2 ,等)操作的拦截,记录真实 SQL ,可以将占位符与参数全部合并在一起显示,方便直接拷贝 SQL 在 MySQL 等客户端直接执行,加快调试速度。

版本

  • springboot
    2.6.3
  • spring-cloud-starter-alibaba
    2021.0.1.0
  • mybatis-plus-boot-starter
    3.4.3.4
  • 数据库驱动
<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.3.0.0</version>
</dependency>

添加log4jdbc依赖

<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
    <scope>runtime</scope>
</dependency>

添加log4jdbc.log4j2.properties文件

# 指定驱动
log4jdbc.drivers=oracle.jdbc.OracleDriver
#毫秒值.执行时间超过该值的SQL语句将被记录为warn级别
log4jdbc.sqltiming.warn.threshold=2000
#毫秒值.执行时间超过该值的SQL语句将被记录为error级别
log4jdbc.sqltiming.error.threshold=3000
#修剪已记录的SOL
log4jdbc.trim.sql=true
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
# 禁止自动加载最常用驱动
log4jdbc.auto.load.popular.drivers=false

替换jdbc驱动

在这里插入图片描述

logback-spring.xml设置log4jdbc日志输出级别

<!--  慢sql耗时log begin-->
    <logger name="jdbc.connection" level="OFF"/>
    <logger name="jdbc.resultset" level="OFF"/>
    <logger name="jdbc.resultsettable" level="OFF"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.sqltiming" level="WARN"/>
    <logger name="jdbc.sqlonly" level="OFF"/>
    <!--  慢sql耗时log end-->
    <springProfile name="local">
        <!--  慢sql耗时log,local环境调低级别  -->
        <logger name="jdbc.sqltiming" level="INFO"/>
        <logger name="jdbc.resultsettable" level="INFO"/>
        <root level="DEBUG">
            <appender-ref ref="console" />
            <appender-ref ref="async"/>
        </root>
    </springProfile>

去除mybatis-plus sql控制台输出

在这里插入图片描述

效果图

在这里插入图片描述
从效果图可以看到,log出的sql是完整的,不会像mybatis sql包含占位符,参数与sql分别输出的情况,这样非常便于我们进行sql分析。

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

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

相关文章

C++之operator重载运算符应用(一百四十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

采集发布到WordPress指定文章作者

采集的数据发布到wordpress系统网站&#xff0c;指定发布文章的作者设置方法教程。 目录 1. 获取用户名 2. 对接采集器指定作者 3. 随机作者 1. 获取用户名 进入Wordpress系统后台&#xff0c;点击控制台左侧菜单的【用户】&#xff0c;再点击展开列表的【所有用户】&…

word2vec self-attention transformer diffusion的技术演变

这一段时间大模型的相关进展如火如荼&#xff0c;吸引了很多人的目光&#xff1b;本文从nlp领域入门的角度来总结相关的技术路线演变路线。 1、introduction 自然语言处理&#xff08;Natural Language Processing&#xff09;&#xff0c;简称NLP。这个领域是通过统计学、数…

使用homebrew安装RabbitMQ3.12.XX版本无法启动的解决方案

使用brew安装RabbitMQ3.12.XX版本遇到无法启动的天坑 首先来看RabbitMQ 3.12.0的新版说明&#xff0c;这也是我为什么无法启动的原因 所需的功能标志 RabbitMQ 3.12.0 将要求在升级前启用 3.11.x 系列版本的所有功能标志、 类似于 3.11.0 要求在 3.9.0 之前引入的所有功能标…

Android SDK file not found: F:\androidSDK\build-tools\34.0.0\aapt

问题表现 执行flutter doctor 的时候&#xff0c;报错Android SDK file not found&#xff0c;很明确的说没有配置 30.0.3 问题解决 首先去报错的SDK路径中排查是否有这个版本。发现有&#xff0c;但是是个空文件夹&#xff0c;所以删除掉该文件夹重新运行 flutter doctor &a…

【大语言模型】5分钟了解预训练、微调和上下文学习

5分钟了解预训练、微调和上下文学习 什么是预训练&#xff1f;什么是微调&#xff1f;什么是上下文学习&#xff1f;相关资料 近年来大语言模型在自然语言理解和生成方面、多模态学习等方面取得了显著进展。这些模型通过 预训练、 微调和 上下文学习的组合来学习。本文将快速…

JWT数字签名与token实现

JWT介绍 官方介绍 JSON Web Token (JWT)是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任&#xff0c;因为它是数字签名的。 什么时候你应该用JSON Web Token &#xf…

python爬虫—selenium获取csdn质量分并用echarts可视化分析

文章目录 ⭐前言⭐selenium&#x1f496; 获取所有的文章url&#x1f496; 根据url查询分数&#x1f496; inscode结合echarts展示结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于python自动化获取个人博客质量分并可视化。 该系列文章&#xff1a; python爬…

MATLAB App Designer基础教程 Matlab GUI入门(一)

MATLAB GUI入门 第一天 学习传送门&#xff1a; 【MATLAB App Designer基础教程Matlab GUI界面设计&#xff08;全集更新完毕-用户界面设计appdesigner&#xff08;中文&#xff09;Matlab Gui教程】 https://www.bilibili.com/video/BV16f4y147x9/?p2&share_sourcecopy_…

音视频解码流程解析

文章目录 1.音视频解码过程2.FFmpeg解音视频流程3.关键函数说明 1.音视频解码过程 2.FFmpeg解音视频流程 3.关键函数说明 avcodec_find_decoder:根据指定AVCodecID查找注册的解码器av_parser_init:初始化AVCodecParserContextavcodec_alloc_context3:创建AVCodecContext上下文…

同行共建,引领潮流,我来说说亚马逊云科技的中国新举措

亚马逊云科技全面阐述生成式AI新机遇&#xff0c;宣布多项举措助力企业加速创新、可持续发展。 【全球云观察 &#xff5c; 热点关注】当前&#xff0c;全球公有云整体规模已经发展到足够大了&#xff0c;来自专业分析机构的数据统计显示&#xff0c;包括了laaS、PaaS、SaaS在内…

gitlab集成kubernetes

gitlab集成kubernetes 1. 管理员通过服务模板添加Kubernetes集群&#xff0c;是生效所有项目 2. 群组中也可以添加Kubernetes集群&#xff0c;优先于管理员添加的全局集群 3. 链接现有集群 4. 配置集群信息 http://178.119.31.180/help/user/project/clusters/add_existing_cl…

uniapp中环状进度条

调用插件&#xff1a; <circle-progress-bar :pro"84/100" :border_back_color"#297DFE" :border_color"#FB8F23">{{84}}%</circle-progress-bar>添加插件引用&#xff1a; <script>import CircleProgressBar from ../../com…

QT桌面挂件动画

目录 参考功能实现05DesktopPattern.promain.cppdesktoppattern.hdesktoppattern.cppwallpaper.hwallpaper.cpp 效果模糊知识点 参考 图片资源 功能 桌面挂件动画置顶切换挂件动画图片选择更换桌面壁纸显示时改变桌面壁纸&#xff0c;隐藏/退出时还原桌面壁纸系统托盘菜单&a…

R语言复现一篇6分的孟德尔随机化文章

上一期我们对孟德尔随机化做了一个简单的介绍&#xff0c;今天我们来复现一篇6分左右的使用了孟德尔随机化方法的文章&#xff0c;文章的题目是&#xff1a;Mendelian randomization analysis does not reveal a causal influence of mental diseases on osteoporosis&#xff…

Angular 与 PDF之五 实现方式的选择与扩展

在纯web的前提下&#xff08;不考虑移动端native&#xff09;&#xff0c;PDF的功能基本包括&#xff1a; 客户端PDF&#xff1a;最简单的场景&#xff0c;实现方式也很多&#xff0c;基本不需要有什么顾虑的地方&#xff0c;简单的实现可以参考系列第一篇文章。客户端PDF预览&…

【NM 2019】综述:基于机器学习引导的定向进化蛋白质工程

Machine-learning-guided directed evolution for protein engineering | Nature Methods Machine-learning-guided directed evolution for protein engineering 机器学习引导的定向进化蛋白质工程 图1 | 带和不带机器学习的定向进化。 a&#xff09;定向进化利用迭代循环的…

MySQL数据库---笔记5

MySQL数据库---笔记5 一、锁1.1、介绍1.2、全局锁1.2.1、全局锁介绍1.2.2、一致性数据备份 1.3、表级锁1.3.1、表锁1.3.2、元数据锁&#xff08;meta data lock , MDL&#xff09;1.3.3、意向锁 1.4、行级锁1.4.1、介绍1.4.2、行锁1.4.3、间隙锁/临建锁 二、InnoDB引擎2.1、逻辑…

vue和node使用websocket实现数据推送,实时聊天

需求&#xff1a;node做后端根据websocket&#xff0c;连接数据库&#xff0c;数据库的字段改变后&#xff0c;前端不用刷新页面也能更新到数据&#xff0c;前端也可以发送消息给后端&#xff0c;后端接受后把前端消息做处理再推送给前端展示 1.初始化node&#xff0c;生成pac…

STM32杂记之单片机复位状态

参考源码 概况 复位后&#xff0c;器件从内部高速振荡器 &#xff08;HSI 8MHz&#xff09; 运行&#xff0c;FLASH 0 等待状态&#xff0c;FLASH预取缓冲区使能&#xff0c;除内部 SRAM、FLASH和 JTAG 外&#xff0c;所有外设均关闭。高速 &#xff08;AHB&#xff09; 和低…