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

深入解析:Spring boot中 限制 Mybatis SQL日志的大字段输出

由于现有的项目框架中,针对MyBatis的SQL日志,会完整的输出sql语句及参数内容。

存在对longtext、clob等大字段,在执行INSERT、UPDATA语句中,导致控制台输出问题:

  • 日志文件迅速膨胀
  • JVM内存异常

通过 LogbackLog4j2 的自定义 ConverterFilter,对 MyBatis 打印的 PreparedStatement 参数进行截断或脱敏。

可以直接通修改定日志级别,限制Debug级别

1、创建自定义转换器

import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;/***** @author xuancg* @date 2025/9/30*/
public class SqlParamMaskingConverter extends ClassicConverter {private static final int MAX_LENGTH = 400;private static final String MASK = "...[MASKED: too long to show]";@Overridepublic String convert(ILoggingEvent event) {String message = event.getFormattedMessage();// 匹配 PreparedStatement 的参数设置日志,如:? column1 = 'value'
        if (message.startsWith("==> Parameters:") || message.startsWith("Parameters:")) {return maskLongStrings(message);}return message;}private String maskLongStrings(String msg) {// 简单处理:对单引号包裹的长字符串进行截断if(msg.length() > MAX_LENGTH){return msg.substring(0, MAX_LENGTH) + MASK;}return msg;}
}

2、注册到 logback.xml

主要修改内容:

%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %maskedMsg%n

http://www.jsqmd.com/news/8111/

相关文章:

  • 【AI时代速通QT】第九节:揭秘Qt编译全流程-从.pro材料到可执行程序
  • 考试心得5
  • 实用指南:Transformer模型:深度解析自然语言处理的革命性架构——从预训练范式到产业级实践
  • PocoEmit遥遥领先于AutoMapper之打通充血模型的任督二脉
  • Solar9月赛wp - 场
  • Elastic Search 安装部署最全教程(Docker)
  • 深入解析:Playwright同步、异步、并行、串行执行效率比较
  • Linux基础开发工具 --- vim - 详解
  • 2025十一集训——Day2模拟赛
  • 完整教程:ARM Cortex-M:内存保护单元 (MPU) 发布
  • 【Clion】【文件编码】Clion内置控制台中文字体乱码的解决方案及编码格式调整
  • Qt纯代码实现智能安防集中管理平台/楼宇对讲管理系统/门禁管理/视频监控
  • 汉文博士词典库源文件已在 github 开放
  • 读人形机器人30未来20年
  • Flutter + Ollama:开启本地AI的全平台新纪元 —— 从零剖析一款现代化AI客户端的技能奥秘
  • 产业园区招商团队快躺平了 - 智慧园区
  • DaYe-PhotoStudio-2 v2.0.0 安装教程(64位/AMD64)详细步骤
  • 股票资料API接口全解析:从技术原理到多语言实战(含实时行情、MACD、KDJ等技术指标数据与API文档详解)
  • 洛谷 P3545
  • 威胁狩猎实战:终端攻击行为分析与检测
  • 2024年全国大学生信息安全竞赛安徽省赛网络高效的系统建设与运维赛项-网络构建真题
  • 详细介绍:BPEL:企业流程自动化的幕后指挥家
  • 实用指南:基于Hadoop+Spark的人体体能数据分析与可视化系统开源实现
  • 基于Hadoop的肾脏疾病风险分析系统架构设计精髓 - 实践
  • 实用指南:开源 C# 快速开发(十四)进程--内存映射
  • rqlite 集成sqlite-vec 简单说明
  • 英语_阅读_Water Sliding_待读
  • 实用指南:ArcGIS JSAPI 高级教程 - 高亮效果优化之开启使用多高亮样式
  • const在for用不了
  • 10月北京中学集训随笔