MyBatisFlex的SQL日志记录

结城 SpringBoot 5 次阅读 260 字 发布于 8 天前 预计阅读时间: 1 分钟


MyBatisFlex内置了自己的SQL日志解决方案。

区别于传统的框架,MyBatisFlex的日志记录更加完善,将所有的SQL语句和参数进行了完整输出,复制即可直接执行。

我的实际使用配置如下。

public class MyBatisFlexConfig {

    // 慢SQL阈值,默认1秒
    @Value("${mybatis-flex.audit.slow-sql-threshold:1000}")
    private long slowSqlThreshold;

    public MyBatisFlexConfig(@Value("${mybatis-flex.audit.enable:false}") boolean auditEnable) {
        // 1. 设置是否开启审计
        AuditManager.setAuditEnable(auditEnable);

        // 2. 配置日志收集器
        AuditManager.setMessageCollector(auditMessage -> {
            long elapsedTime = auditMessage.getElapsedTime();

            // 场景 A:慢 SQL 记录 (阈值之上,使用 WARN 级别)
            if (elapsedTime > slowSqlThreshold) {
                log.warn("[慢SQL告警] 耗时: {}ms, SQL: {}", elapsedTime, auditMessage.getFullSql());
                return;
            }

            // 场景 B:普通 SQL 记录
            if (log.isInfoEnabled()) {
                log.info("[SQL-info] SQL: {}, 耗时: {}ms", auditMessage.getFullSql(), elapsedTime);
            }
        });
    }
}

这里使用了两个参数,用来管理配置自定义日志记录器。

一个是日志记录开关,决定了日志记录是否开启。

一个是慢SQL的时间标准,定义了SQL阈值到达多少后记录为慢SQL。