Spring Boot + MyBatis日志前綴清除方法

在 Spring Boot 結合 MyBatis 的應用中,清空日志前綴(如?==>?<==?等)需要通過?自定義 MyBatis 的日志實現?或?修改日志模板?來實現。以下是兩種常用方法:


方法 1:自定義 MyBatis 日志實現(推薦)

通過繼承 MyBatis 的日志適配器,重寫日志輸出邏輯以移除前綴。

步驟:
  1. 創建自定義日志類
    新建一個類,繼承自?org.apache.ibatis.logging.Log?并覆蓋日志方法:

    java

    復制

    下載

    import org.apache.ibatis.logging.Log;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;public class NoPrefixMyBatisLogger implements Log {private final Logger logger;public NoPrefixMyBatisLogger(String clazz) {this.logger = LoggerFactory.getLogger(clazz);}@Overridepublic boolean isDebugEnabled() {return logger.isDebugEnabled();}@Overridepublic boolean isTraceEnabled() {return logger.isTraceEnabled();}@Overridepublic void error(String s, Throwable e) {logger.error(s, e);}@Overridepublic void error(String s) {logger.error(s);}@Overridepublic void debug(String s) {// 直接輸出原始 SQL,移除前綴 "==> "logger.debug(s.replaceAll("^==>\\s+", ""));}@Overridepublic void trace(String s) {// 直接輸出結果,移除前綴 "<== "logger.trace(s.replaceAll("^<==\\s+", ""));}@Overridepublic void warn(String s) {logger.warn(s);}
    }
  2. 創建日志工廠類
    實現?org.apache.ibatis.logging.LogFactory

    java

    復制

    下載

    import org.apache.ibatis.logging.Log;
    import org.apache.ibatis.logging.LogFactory;public class NoPrefixLogFactory implements LogFactory {@Overridepublic Log getLog(Class<?> clazz) {return new NoPrefixMyBatisLogger(clazz.getName());}
    }
  3. 在?application.yml?中指定日志工廠
    配置 MyBatis 使用自定義的日志工廠:

    yaml

    復制

    下載

    mybatis:configuration:log-impl: com.yourpackage.NoPrefixLogFactory  # 替換為你的包路徑

方法 2:通過日志框架過濾前綴(以 Logback 為例)

修改日志配置文件,使用正則過濾掉前綴。

步驟:
  1. 修改?logback-spring.xml?文件
    在日志模板中使用?replace?函數移除前綴:

    xml

    復制

    下載

    運行

    <configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><!-- 關鍵:使用 replace 過濾前綴 --><pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 針對 MyBatis 的 Logger 單獨處理 --><logger name="org.apache.ibatis" level="DEBUG"><appender-ref ref="CONSOLE" /></logger><root level="INFO"><appender-ref ref="CONSOLE" /></root>
    </configuration>
  2. 使用正則替換日志內容
    在?pattern?中無法直接替換,需結合自定義?Layout(較復雜)。更簡單的方式是直接修改方法 1 中的日志輸出。


驗證結果

配置后執行 SQL,日志將不再顯示前綴:

plaintext

復制

下載

2023-10-01 12:00:00 DEBUG [main] mapper.UserMapper.selectUser - Preparing: SELECT * FROM user WHERE id = ? 
2023-10-01 12:00:00 DEBUG [main] mapper.UserMapper.selectUser - Parameters: 1(Integer)
2023-10-01 12:00:00 DEBUG [main] mapper.UserMapper.selectUser - Total: 1

注意事項

  1. MyBatis 原生前綴來源
    前綴?==>?和?<==?是 MyBatis 在?Log?實現中硬編碼添加的(見?BaseJdbcLogger?類),無法通過配置直接關閉,必須通過自定義日志實現覆蓋。

  2. 日志級別
    確保 MyBatis 的日志級別為?DEBUG(在?application.yml?中配置):

    yaml

    復制

    下載

    logging:level:com.yourpackage.mapper: DEBUG  # Mapper 接口所在包
  3. 性能影響
    方法 1 中的正則替換?s.replaceAll(...)?可能輕微影響性能,可在高并發場景下優化為字符串截取。

選擇適合你項目的方式即可徹底移除日志前綴。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86777.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86777.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86777.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【消息隊列】——如何實現消息保序

目錄 一、哪些場景需要消息保序?二、如何實現消息保序?三、保序消息的常見問題和應對策略3.1、重復消息3.2、節點故障3.3、分區擴容四、小結本文來源:極客時間vip課程筆記 一、哪些場景需要消息保序? 消息保序問題指的是,在通過消息中間件傳遞消息過程中,我們希望消費者收…

Transformer模型詳解

Transformer Transformer真是個細節滿滿的框架呢&#xff0c;大三讀到根本不敢看&#xff0c;考研復試前看了看&#xff0c;以為懂了其實差得還遠&#xff0c;兩個多月前看了&#xff0c;還是一知半解&#xff0c;如今終于經過細細分析&#xff0c;算是知道了Transformer的基本…

火山引擎發布豆包大模型 1.6 與視頻生成模型 Seedance 1.0 pro

6 月 11 日&#xff0c;在火山引擎 FORCE 原動力大會上&#xff0c;字節跳動旗下火山引擎正式發布豆包大模型 1.6、豆包?視頻生成模型 Seedance 1.0 pro、豆包?語音播客模型&#xff0c;豆包?實時語音模型也在火山引擎全量上線&#xff0c;豆包大模型家族已成為擁有全模態、…

PH熱榜 | 2025-06-12

1. Atlas 標語&#xff1a;幾秒鐘內了解定價情況 介紹&#xff1a;獲取即插即用的定價頁面&#xff0c;讓你輕松賺錢&#xff0c;不再辛苦操勞。 產品網站&#xff1a; 立即訪問 Product Hunt&#xff1a; View on Product Hunt 關鍵詞&#xff1a;Atlas, 定價快速, 插件式…

ChatGPT革命升級!o3-pro模型重磅發布:開啟AI推理新紀元

2025年6月10日&#xff0c;OpenAI以一場低調而震撼的發布&#xff0c;正式推出了新一代推理模型o3-pro&#xff0c;這標志著人工智能在復雜問題解決領域的重大突破。作為ChatGPT Pro和Team訂閱用戶的專屬工具&#xff0c;o3-pro不僅重新定義了AI的可靠性標準&#xff0c;更以其…

NVIDIA Isaac GR00T N1.5 適用于 LeRobot SO-101 機械臂

系列文章目錄 目錄 系列文章目錄 前言 一、簡介 二、詳細教程 2.1 數據集準備 2.1.1 創建或下載您的數據集 2.1.2 配置模態文件 2.2 模型微調 2.3 開環評估 2.4 部署 &#x1f389; 快樂編程&#xff01;&#x1f4bb;&#x1f6e0;? 立即開始&#xff01; 前言 一…

【編譯工具】(自動化)自動化測試工具:如何讓我的開發效率提升300%并保證代碼質量?

目錄 引言&#xff1a;自動化測試在現代開發中的關鍵作用 一、自動化測試金字塔&#xff1a;構建高效的測試策略 &#xff08;1&#xff09;測試金字塔模型 &#xff08;2&#xff09;各層級代表工具 二、前端自動化測試實戰&#xff1a;Jest Cypress &#xff08;1&…

R語言緩釋制劑QBD解決方案之一

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》緩釋制劑包衣處方研究的R語言解決方案。 ER聚合物包衣處方優化研究 基于初步風險評估和初始可行性研究&#xff0c;進行帶3個中心點的24-1分式析因DOE。藥物的釋放被識別為CQA。本研究的…

行為模式-命令模式

定義&#xff1a; 命令模式是一個高內聚的模式&#xff0c;其定義為&#xff1a;Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable operations.&#xff08;將一個請求封裝成…

Ubuntu 24.04 上安裝與 Docker 部署 Sentinel

Ubuntu 24.04 上安裝與 Docker 部署 Sentinel 一、Sentinel 簡介 Sentinel 是阿里巴巴開源的分布式系統流量控制組件&#xff0c;提供流量控制、熔斷降級和系統負載保護等功能。它通過可視化控制臺&#xff08;Dashboard&#xff09;實現實時監控和規則管理&#xff0c;是微服…

IP 地址查詢在證券交易中的應用方式

網絡安全保障與IP地址查詢 證券交易平臺存儲著海量投資者的敏感信息以及巨額資金的交易數據&#xff0c;是網絡攻擊的重點目標。IP 地址查詢在檢測異常登錄行為方面至關重要。例如&#xff0c;當一個賬戶短時間內先在國內某城市登錄&#xff0c;隨后又在境外 IP 地址發起交易操…

Flutter 常用組件詳解:Text、Button、Image、ListView 和 GridView

Flutter 作為 Google 推出的跨平臺 UI 框架&#xff0c;憑借其高效的渲染性能和豐富的組件庫&#xff0c;已經成為移動應用開發的熱門選擇。本文將深入探討 Flutter 中最常用的五個基礎組件&#xff1a;Text、Button、Image、ListView 和 GridView&#xff0c;幫助開發者快速掌…

docker 單機部署redis集群(一)

docker 部署redis集群 1、創建redis網卡 docker network create redis --subnet 172.38.0.0/16查看網卡信息 docker network ls docker network inspect redis2、創建redis配置 #使用腳本創建6個redis配置for port in $(seq

MySQL 索引學習筆記

1.二叉樹&#xff0c;紅黑樹&#xff0c;B 樹&#xff0c;B樹 二叉樹&#xff1a;就是每個節點最多只能有兩個子節點的樹&#xff1b; 紅黑樹&#xff1a;就是自平衡二叉搜索樹&#xff0c;紅黑樹通過一下五個規則構建&#xff1a; 1.節點只能是紅色或黑色&#xff1b; 2.根…

Windows安裝docker及使用

下載 https://www.docker.com/ 安裝 啟動 此時拉取鏡像會報錯 Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 配置引擎 添加以…

多參表達式Hive UDF

支持的操作符 &#xff1a;跳過&#xff0c;即無條件篩選&#xff1a;等于!&#xff1a;不等于range&#xff1a;區間內&#xff0c;range[n,m]表示 between n and mnrange&#xff1a;區間外&#xff0c;即not between andin&#xff1a;集合內&#xff0c;in(n,m,j,k)表示 in…

GO后端開發內存管理及參考答案

什么是 Go 的逃逸分析&#xff08;Escape Analysis&#xff09;&#xff0c;為什么需要它&#xff1f; Go 的逃逸分析是一種編譯時技術&#xff0c;用于確定變量的生命周期是否超出其創建的函數作用域。通過分析變量的使用方式&#xff0c;編譯器能夠判斷變量是否需要在堆上分…

未來智能系統演進路線:從AGI到ASI的技術藍圖

引言&#xff1a;智能革命的下一個十年 在AI技術突破性發展的當下&#xff0c;我們正站在通用人工智能&#xff08;AGI&#xff09;向人工超級智能&#xff08;ASI&#xff09;躍遷的關鍵轉折點。本文將系統解析未來3-10年的技術演進路徑&#xff0c;通過模塊化組件插件&#…

eNSP-Cloud(實現本地電腦與eNSP內設備之間通信)

說明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一個虛擬的網絡世界&#xff0c;里面有虛擬的路由器、交換機、電腦&#xff08;PC&#xff09;等等。這些設備都在你的電腦里面“運行”&#xff0c;它們之間可以互相通信&#xff0c;就像一個封閉的小王國。 但是&#…

AI Agent 核心策略解析:Function Calling 與 ReAct 的設計哲學與應用實踐

引言 在人工智能助手和自主Agent快速發展的今天&#xff0c;如何讓AI系統不僅能夠理解復雜指令&#xff0c;還能有效地執行任務并適應動態環境&#xff0c;成為技術演進的關鍵問題。本文將深入探討兩種核心的Agent設計策略&#xff1a;Function Calling&#xff08;函數調用&a…