开发者社区 > 云原生 > 微服务 > 正文

日志没有输出sql语句错误,怎么能通过arthas实现mybatis的log信息查看?

日志没有输出sql语句错误,怎么能通过arthas实现mybatis的log信息查看?

展开
收起
三分钟热度的鱼 2024-01-24 16:25:52 454 0
1 条回答
写回答
取消 提交回答
  • 使用 Arthas 工具可以动态地监控 Java 应用程序,对于 MyBatis 中 SQL 执行的监控,可以通过 Arthas 提供的方法追踪(trace)或 OGNL 表达式等功能来获取 SQL 语句的信息。

    以下是使用 Arthas 查看 MyBatis SQL 执行的步骤:

    方法追踪 (trace)

    1. 首先确保你的应用已经接入了 Arthas,并且正在运行。

    2. 使用 trace 命令来追踪特定方法的执行,通常是 MyBatis 的 Executor 类中的 updatequery 等方法,这些方法会执行具体的 SQL 语句。

      trace [class-pattern] [method-pattern] [-n <排名数量>] [--skipJDKMethod <是否跳过JDK方法>] [--condition <Ognl表达式>] [-e] [--outputFile <输出文件>] [--batch] [--async]
      

      示例:

      trace com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor execute --skipJDKMethod false
      

      这样会跟踪 MybatisSimpleExecutor 类的 execute 方法,展示每次调用及其内部执行的 SQL。

    OGNL 表达式查看

    如果你知道某个类实例上有 SQL 相关的信息,也可以使用 Arthas 的 OGNL 表达式直接查看变量值。

    ognl [expression]
    

    例如,如果有一个 Mapper 实例中有 SQL 字符串,你可以尝试获取这个实例并查看它的 SQL 属性。

    注意事项

    • Arthas 不直接提供将 MyBatis 的 SQL 日志输出到控制台的功能,而是通过追踪方法调用来间接查看 SQL 执行情况。
    • 请确保你对 Arthas 的使用权限正确,避免对生产环境造成影响。
    • 上述命令示例基于 MyBatis Plus,如果是原生 MyBatis,相应的类名会有所不同,比如 org.apache.ibatis.executor.Executor

    总之,通过 Arthas 可以帮助开发者在不修改应用程序配置的情况下,实时观测 MyBatis SQL 的执行情况,这对于排查线上问题非常有帮助。不过,最佳实践仍然是在开发环境中启用详细的 SQL 日志记录,并结合 Arthas 等工具辅助诊断。

    2024-01-26 14:58:10
    赞同 展开评论 打赏

为微服务建设降本增效,为微服务落地保驾护航。

相关电子书

更多
Python 系列直播——深入Python与日志服务,玩转大规模数据分析处理实战第二讲 立即下载
Python第四讲——使用IPython/Jupyter Notebook与日志服务玩转超大规模数据分析与可视化 立即下载
大规模日志数据平台架构面临的问题与挑战 立即下载