最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring boot中限制 Mybatis SQL日志的大字段輸出問題

 更新時(shí)間:2025年10月09日 09:25:07   作者:宣晨光  
文章介紹Springboot中MyBatis SQL日志因大字段輸出導(dǎo)致日志膨脹及JVM內(nèi)存問題,建議通過Logback或Log4j2自定義Converter/Filter實(shí)現(xiàn)參數(shù)截?cái)嗷蛎撁?或調(diào)整日志級(jí)別限制調(diào)試信息,本文給大家介紹Spring boot中限制Mybatis SQL日志的大字段輸出問題,感興趣的朋友一起看看吧

由于現(xiàn)有的項(xiàng)目框架中,針對(duì)MyBatis的SQL日志,會(huì)完整的輸出sql語句及參數(shù)內(nèi)容。

存在對(duì)longtext、clob等大字段,在執(zhí)行INSERT、UPDATA語句中,導(dǎo)致控制臺(tái)輸出問題:

  • 日志文件迅速膨脹
  • JVM內(nèi)存異常

通過 LogbackLog4j2 的自定義 ConverterFilter,對(duì) MyBatis 打印的 PreparedStatement 參數(shù)進(jìn)行截?cái)嗷蛎撁簟?/p>

可以直接通修改定日志級(jí)別,限制Debug級(jí)別

1、創(chuàng)建自定義轉(zhuǎn)換器

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]";
    @Override
    public String convert(ILoggingEvent event) {
        String message = event.getFormattedMessage();
        // 匹配 PreparedStatement 的參數(shù)設(shè)置日志,如:? column1 = 'value'
        if (message.startsWith("==> Parameters:") || message.startsWith("Parameters:")) {
            return maskLongStrings(message);
        }
        return message;
    }
    private String maskLongStrings(String msg) {
        // 簡單處理:對(duì)單引號(hào)包裹的長字符串進(jìn)行截?cái)?
        if(msg.length() > MAX_LENGTH){
            return msg.substring(0, MAX_LENGTH) + MASK;
        }
        return msg;
    }
}

2、注冊到logback.xml

主要修改內(nèi)容:

<conversionRule conversionWord="maskedMsg" converterClass="com.xx.SqlParamMaskingConverter"/>
<!-- 日志輸出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %maskedMsg%n" />
<configuration>
    <!-- 注冊自定義轉(zhuǎn)換器 -->
    <conversionRule conversionWord="maskedMsg" converterClass="com.xx.SqlParamMaskingConverter"/>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %maskedMsg%n</pattern>
        </encoder>
    </appender>
    <!-- 只對(duì) MyBatis 的 SQL 日志啟用 -->
    <logger name="org.apache.ibatis.logging.jdbc.PreparedStatementLogger" level="DEBUG">
        <appender-ref ref="STDOUT"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

到此這篇關(guān)于Spring boot中 限制 Mybatis SQL日志的大字段輸出的文章就介紹到這了,更多相關(guān)Spring boot限制Mybatis SQL日志輸出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java list.remove( )方法注意事項(xiàng)

    Java list.remove( )方法注意事項(xiàng)

    這篇文章主要介紹了Java list.remove( )方法注意事項(xiàng),非常簡單易懂,需要的朋友可以參考下
    2018-08-08
  • java和c/c++ 數(shù)據(jù)類型長度的比較

    java和c/c++ 數(shù)據(jù)類型長度的比較

    本篇文章主要是對(duì)java和c/c++ 數(shù)據(jù)類型長度的進(jìn)行了詳細(xì)的比較。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-01-01
  • Spring Boot 的java -jar命令啟動(dòng)原理詳解

    Spring Boot 的java -jar命令啟動(dòng)原理詳解

    這篇文章主要介紹了Spring Boot 的java -jar命令啟動(dòng)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn)

    IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn)

    本文主要介紹了IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java實(shí)戰(zhàn)之用Swing實(shí)現(xiàn)通訊錄管理系統(tǒng)

    Java實(shí)戰(zhàn)之用Swing實(shí)現(xiàn)通訊錄管理系統(tǒng)

    今天給大家?guī)淼氖荍ava實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞著Swing實(shí)現(xiàn)通訊錄管理系統(tǒng)展開,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例

    Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例

    這篇文章主要介紹了Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java?C++刷題leetcode1106解析布爾表達(dá)式

    Java?C++刷題leetcode1106解析布爾表達(dá)式

    這篇文章主要為大家介紹了Java?C++刷題leetcode1106解析布爾表達(dá)式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • java短路邏輯運(yùn)算符實(shí)例用法詳解

    java短路邏輯運(yùn)算符實(shí)例用法詳解

    在本篇文章里小編給大家分享的是一篇關(guān)于java短路邏輯運(yùn)算符實(shí)例用法內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-04-04
  • java批量修改文件后綴名方法總結(jié)

    java批量修改文件后綴名方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于java批量修改文件后綴名方法和相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • Spring?Boot?中實(shí)現(xiàn)?WebSocket?集群思路詳解

    Spring?Boot?中實(shí)現(xiàn)?WebSocket?集群思路詳解

    本文介紹了如何在SpringBoot中實(shí)現(xiàn)WebSocket集群處理,解決了會(huì)話共享和消息同步問題,通過分布式存儲(chǔ)(Redis)和消息隊(duì)列(RedisPub/Sub)實(shí)現(xiàn)跨節(jié)點(diǎn)通信,感興趣的朋友跟隨小編一起看看吧
    2025-12-12

最新評(píng)論

论坛| 寻乌县| 迭部县| 延吉市| 玛多县| 凌云县| 林西县| 永德县| 宣威市| 京山县| 锦州市| 石楼县| 怀化市| 鄢陵县| 交口县| 闸北区| 柘城县| 贡觉县| 西充县| 宝鸡市| 海城市| 老河口市| 盖州市| 新沂市| 那坡县| 云和县| 永仁县| 桓台县| 上栗县| 大荔县| 罗源县| 灵川县| 焦作市| 肥东县| 平凉市| 武胜县| 鹤庆县| 隆化县| 同仁县| 河源市| 青州市|