前言
为了便于精准排查问题,需要将当前的请求信息与当前执行的 SQL 信息设置对应关系记录下来,记录的 SQL 信息包括:
- 执行 SQL 的当前时间;
- 执行 SQL 的文件地址和行号;
- 执行 SQL 的花费时长;
- 执行 SQL 的影响行数;
- 执行的 SQL 语句;
数据库组件使用的是。
思路
1、在执行 SQL 前,设置开始执行时间(计算执行时长会用到);
TraceTrace
GORMCallbacksContextGORM V2gorm.io/gorm
演示代码
ContextGORM V2WithContext()
CallBacks
下面是我写的插件代码:
最后,在 db 连接的时候使用这个插件:
效果
小结
trace
- 支持设置 trace_id
- 支持设置 request 信息
- 支持设置 response 信息
- 支持设置 third_party_requests 三方请求信息
- 支持设置 debugs 打印调试信息
- 支持设置 sqls 执行 SQL 信息
- 可记录 cost_seconds 执行时长
以上代码在 go-gin-api 项目中,地址:
github.com/xinliangnote/go-gin-api