c++控制台输入不确定行数_Mybatis控制台SQL格式化

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

使用

首页

4336a063d91d1cc300bfb13f78a7fdde.png
首页

支持文件或者文本方式

此处有两种风格可选,只查看SQL推荐风格A想根据日志挑选SQL推荐风格B

风格A

d3645455d772aed8bf99a38cc13f58e2.png
风格A页面

只展示解析出来的SQL,有的Preparing SQL需要两个参数,查找到Parameters参数有多个符合的,按照行数最相近的展示,通常选第一个就对了!

风格B

3abba9790313428292291d948b08a091.png
风格B页面

此处会将日志原封不动的展示出来,点击对应Preparing SQL对应的前面的行号数字

多个SQL规则同上

064dd7a3774d23491db57ddb072d1d67.png
风格B页面解析结果
5d2c72c3b9aff8595f7fd9c1db0eb094.gif
风格B页面功能GIF

后续考虑优化

风格A界面优化

风格A界面目前只是能用,展示和交互都还太差了

风格B界面交互优化

点击前面的行号数字很容易点错

后续考虑光标所在行,直接按快捷键

性能优化

日志行数较多情况下,解析较慢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值