Go 基于原生库驱动 driver 输出SQL日志
背景需求
Go进行数据库操作时,我们使用较多的是 sqlx
。sqlx
在出色的内置 database/sql
软件包的基础上提供了一组扩展。该库兼容 sql原生包
,同时又提供了更为强大的、优雅的查询、插入函数。
开发时有时需要打印SQL具体的执行情况,如最终的执行语句、耗时、日志等等。翻看sqlx
源码时,发现没有提供插件
这类扩展性的接口或者说hook
(gorm
就提供的有)之类的概念,相关资料也没有,思来想去只能从驱动入手。
大体逻辑
利用 SQLHooks
在 sql.Driver
上挂载钩子函数
参考文章
Go 基于原生库驱动 driver 输出 SQL 日志/ 监控 / 链路追踪方案(上)
参考项目
- sqlhooks
- sqlhooks-exmaple(该项目是作者参考
sqlhooks
实现)