[gogf/gf]gdb的自定义操作问题

2024-06-25 532 views
2

用gdb开发,遇到一个问题,需求是这样: 我参照我目前公司那套php框架的思维,它在底层调用一个函数,把每一条的sql查询和时间记录到数据库,方便以后统计和排查。我想问一下在gf上怎么实现这个功能 另外是每一个sql都会加上一个注释,备注访问的controller和action值,这个有没有办法实现呢

我看了底层代码,原本想用提取orm组装好的sql之后,自己写个方法,把这个备注信息加上,然后再用用query方法执行一下。发现目前底层不提供这个提取sql的功能。喜欢在gdb加一个hook机制吧,这样操作方便很多

回答

2

@fanshu19

麻烦再详细阐述一下你说的这块是什么意思呢?

好的,既然有issue作为记录了,HOOK机制会纳入后续的开发功能中。

3

@johngcn SELECT /mes_api|/login/ * FROM tenants WHERE tenant_id=? 最后输出的sql大概是这样。 架构上,service提供各种查询的,很多地方用,如果sql不备注一些信息的话,出问题的时候,根本是很难查找什么api接口调用的。所以我们公司目前使用这样的方式,每次出现问题,看一下sql就马上可以定位到。

3

@fanshu19 你的意思是在执行SQL的时候由程序传递一些描述信息到orm,输出执行的sql的时候同时把这些描述信息打印出来,是这个意思吗?

3

执行SQL前由程序传递一些描述信息到orm,然后直接丢给mysql执行。因为mysql有日志记录的,或者在debug模式下有sql打印,这样就可以定位错误点了。 这个其实就是hook机制可以实现。我实际应用是上面描述的那样而已。

4

这个特性的优先级不高。

2

我也有和同样需要,SQL语句hook和注释