試功能)
你想要開啟 Flowable 原生的日志調(diào)試功能以便查看引擎內(nèi)部的執(zhí)行過程、SQL 語(yǔ)句、命令執(zhí)行等關(guān)鍵信息我會(huì)分「核心日志SQL/引擎流程」和「全量日志詳細(xì)調(diào)試」兩種場(chǎng)景給出 Spring Boot 項(xiàng)目中最完整的配置方式并說(shuō)明關(guān)鍵日志類別和調(diào)試技巧。一、核心需求響應(yīng)你需要在 Spring Boot 項(xiàng)目中開啟 Flowable 原生日志既能查看自定義 SQL 的執(zhí)行詳情也能排查引擎內(nèi)部的執(zhí)行邏輯如命令執(zhí)行、事務(wù)處理、流程解析等以下是分場(chǎng)景的配置方案。二、開啟 Flowable 原生日志Spring Boot 配置1. 基礎(chǔ)配置開啟 Flowable SQL 日志最常用如果僅需調(diào)試 Flowable 核心表的 SQL 執(zhí)行包括你自定義的 XML/原生 SQL只需在application.yml/application.properties中添加 Flowable MyBatis 日志配置YAML 配置推薦flowable: # 開啟 Flowable 底層 MyBatis SQL 日志核心 mybatis: configuration: # 打印原生 SQL 語(yǔ)句 參數(shù) 執(zhí)行結(jié)果 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 可選開啟 MyBatis 詳細(xì)日志如參數(shù)映射 log-prefix: FLOWABLE-SQL- cache-enabled: false # 關(guān)閉緩存便于調(diào)試 # 可選Flowable 引擎基礎(chǔ)日志非 SQL如流程部署/實(shí)例啟動(dòng) async-executor-activate: false # 測(cè)試環(huán)境關(guān)閉異步執(zhí)行器日志更清晰 database-schema-update: true # 可選調(diào)整日志級(jí)別控制 Flowable 核心包的日志輸出 logging: level: # Flowable 核心引擎日志DEBUG 級(jí)別可看到命令執(zhí)行、事務(wù)等 org.flowable.engine.impl: DEBUG # Flowable MyBatis 底層日志TRACE 級(jí)別可看到 SQL 解析 org.flowable.engine.impl.db: TRACE # 關(guān)閉無(wú)關(guān)日志避免干擾 org.springframework: INFO com.zaxxer.hikari: INFO org.flowable.db.mapping.entity: debug org.flowable: info cn.iocoder.yudao.flow.module.flow.mapper: DEBUGProperties 配置# 開啟 Flowable MyBatis SQL 日志 flowable.mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl flowable.mybatis.configuration.log-prefixFLOWABLE-SQL- flowable.mybatis.configuration.cache-enabledfalse # 調(diào)整 Flowable 核心日志級(jí)別 logging.level.org.flowable.engine.implDEBUG logging.level.org.flowable.engine.impl.dbTRACE2. 進(jìn)階配置開啟 Flowable 全量原生日志深度調(diào)試如果需要排查 Flowable 引擎內(nèi)部的詳細(xì)邏輯如流程解析、任務(wù)創(chuàng)建、事件觸發(fā)等需配置logging.level覆蓋 Flowable 核心包的日志級(jí)別logging: level: # Flowable 核心包日志級(jí)別 # 引擎核心命令執(zhí)行、事務(wù)、流程實(shí)例操作- DEBUG 足夠 org.flowable.engine.impl: DEBUG # DB 層SQL 執(zhí)行、表結(jié)構(gòu)更新- TRACE 可看到 SQL 拼接 org.flowable.engine.impl.db: TRACE # 流程解析BPMN 文件解析、節(jié)點(diǎn)初始化 org.flowable.bpmn.parser: DEBUG # 任務(wù)管理任務(wù)創(chuàng)建/分配/完成 org.flowable.task.service: DEBUG # 歷史模塊歷史數(shù)據(jù)插入/查詢 org.flowable.history.service: DEBUG # 命令執(zhí)行器executeCommand 執(zhí)行過程 org.flowable.engine.impl.interceptor: DEBUG # 其他輔助配置 # MyBatis 底層Flowable 依賴 org.apache.ibatis: TRACE # 關(guān)閉無(wú)關(guān)日志 root: INFO org.springframework.web: INFO com.mysql.cj: INFO3. 日志輸出示例調(diào)試自定義 SQL 時(shí)開啟后控制臺(tái)會(huì)打印類似以下日志以你自定義的selectCustomTaskList為例FLOWABLE-SQL- Preparing: SELECT ID_ as id, NAME_ as name, ASSIGNEE_ as assignee, PROC_INST_ID_ as procInstId, DATE_FORMAT(CREATE_TIME_, %Y-%m-%d %H:%i:%s) as createTime FROM ACT_RU_TASK WHERE ASSIGNEE_ ? AND SUSPENSION_STATE_ 1 FLOWABLE-SQL- Parameters: zhangsan(String) FLOWABLE-SQL- Total: 2 FLOWABLE-SQL- Row: 1: id123, name審批任務(wù), assigneezhangsan, procInstIdPROC-001, createTime2026-01-07 10:00:00 FLOWABLE-SQL- Row: 2: id456, name審核任務(wù), assigneezhangsan, procInstIdPROC-002, createTime2026-01-07 11:00:00三、關(guān)鍵日志類別說(shuō)明按需開啟日志包路徑日志級(jí)別輸出內(nèi)容適用場(chǎng)景org.flowable.engine.implDEBUG引擎核心操作命令執(zhí)行、事務(wù)、流程實(shí)例排查流程啟動(dòng)/完成、命令執(zhí)行異常org.flowable.engine.impl.dbTRACESQL 執(zhí)行、表結(jié)構(gòu)更新、參數(shù)映射調(diào)試自定義 SQL、排查 SQL 執(zhí)行錯(cuò)誤org.flowable.bpmn.parserDEBUGBPMN 文件解析、節(jié)點(diǎn)規(guī)則校驗(yàn)排查流程定義解析失敗org.flowable.task.serviceDEBUG任務(wù)創(chuàng)建、分配、完成、刪除排查任務(wù)操作異常org.flowable.history.serviceDEBUG歷史數(shù)據(jù)插入、查詢、清理排查歷史數(shù)據(jù)未生成/查詢不到org.apache.ibatisTRACEMyBatis 底層 SQL 解析、參數(shù)綁定深度調(diào)試 SQL 執(zhí)行細(xì)節(jié)四、調(diào)試技巧按需開啟日志級(jí)別僅調(diào)試 SQL只需開啟flowable.mybatis.configuration.log-implorg.flowable.engine.impl.dbTRACE調(diào)試引擎邏輯開啟org.flowable.engine.implDEBUG避免全局TRACE否則日志量過大影響性能且不易定位問題。排查自定義 SQL 執(zhí)行失敗先看 SQL 日志是否打印出你編寫的 SQL 語(yǔ)句檢查參數(shù)是否正確傳遞Parameters行檢查表/字段名是否正確Flowable 核心表字段為ID_/NAME_等注意下劃線。日志輸出位置默認(rèn)輸出到控制臺(tái)如需輸出到文件添加 Spring 日志文件配置logging: file: name: ./logs/flowable-debug.log # 日志文件路徑 pattern: file: %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n # 日志格式五、注意事項(xiàng)生產(chǎn)環(huán)境關(guān)閉調(diào)試完成后需將日志級(jí)別調(diào)回INFO/WARN避免大量日志影響性能和磁盤空間版本兼容上述配置適用于 Flowable 6.5.x 版本低版本6.4.x 及以下同樣適用僅部分日志包路徑略有差異沖突處理如果項(xiàng)目中同時(shí)配置了 MyBatis 自身的日志業(yè)務(wù)表Flowable SQL 日志和業(yè)務(wù)表 SQL 日志會(huì)分開打印互不影響??偨Y(jié)調(diào)試 Flowable 自定義 SQL優(yōu)先開啟flowable.mybatis.configuration.log-implStdOutImplorg.flowable.engine.impl.dbTRACE可直接看到 SQL 執(zhí)行詳情調(diào)試引擎內(nèi)部邏輯補(bǔ)充開啟org.flowable.engine.implDEBUG查看命令執(zhí)行、事務(wù)等流程日志級(jí)別按需調(diào)整生產(chǎn)環(huán)境務(wù)必關(guān)閉詳細(xì)日志僅保留 INFO/WARN 級(jí)別。