Mybatis Log Parser
问题场景
不知道你们是否有以下场景,项目使用Mybatis
,配置了控制台输出SQL
10:39:14.750 DEBUG 1 --- [or-http-epoll-3] c.c.s.g.d.P.getIamOrganizationRelEnabled : ==> Preparing: SELECT is_enabled FROM iam_user_organization_rel WHERE organization_id = ? and user_id = ?
2020-07-20 10:39:14.750 DEBUG 1 --- [or-http-epoll-3] c.c.s.g.d.P.getIamOrganizationRelEnabled : ==> Parameters: 186(Long), 1519(Long)
2020-07-20 10:39:14.751 DEBUG 1 --- [or-http-epoll-3] c.c.s.g.d.P.getIamOrganizationRelEnabled : <== Total: 1
2020-07-20 10:39:14.752 DEBUG 1 --- [or-http-epoll-3] c.c.c.s.g.d.P.selectProjectsByUserId : ==> Preparing: select source_id from iam_member_role where member_id = ? and member_type = 'user' and source_type = 'project'
2020-07-20 10:39:14.752 DEBUG 1 --- [or-http-epoll-3] c.c.c.s.g.d.P.selectProjectsByUserId : ==> Parameters: 1519(Long)
2020-07-20 10:39:14.763 DEBUG 1 --- [or-http-epoll-3] c.c.c.s.g.d.P.selectProjectsByUserId : <== Total: 31
当我们想调试的时候,还需要把预编译SQL
转换成可执行SQL
;当时我找到了一款IDEA
插件:mybatis-log-plugin
很快,问题来了
插件后面只能转换本地控制台打印的日志,当我在服务器或者k8s
查看pod
日志时,不能满足需求了。
造轮子
因为没有找到满足场景的工具,因此自己写了一个
快速开始
目前提供了Docker方式
docker run --name mybatis-log-parser -p 8080:8080 -d zhituanbox/mybatis-log-parser:1.0
运行之后IP:PORT
使用
首页
支持文件或者文本方式
此处有两种风格可选,只查看
SQL
推荐风格A
想根据日志挑选SQL
推荐风格B
风格A
只展示解析出来的
SQL
,有的Preparing SQL
需要两个参数,查找到Parameters
参数有多个符合的,按照行数最相近的展示,通常选第一个就对了!
风格B
此处会将日志原封不动的展示出来,点击对应
Preparing SQL
对应的前面的行号数字
多个SQL规则同上
后续考虑优化
风格A界面优化
风格A界面目前只是能用,展示和交互都还太差了
风格B界面交互优化
点击前面的行号数字很容易点错
后续考虑光标所在行,直接按快捷键
性能优化
日志行数较多情况下,解析较慢