我试图写一个简单的数据库应用程序在去访问多个数据服务器,一些MySQL,MSSQL和SqlLite 3。我正在使用“数据库/SQL”包来访问他们。
db, err := sql.Open(driver, dataSourceName)
result, err := db.Exec(
"INSERT INTO users (name, age) VALUES (?, ?)",
"gopher",
27,
)
我需要将SQL查询记录到各个服务器上,以便进行调试和审计。我如何才能实现这一点?
2条答案
按热度按时间jgwigjjp1#
假设您不想使用服务器的日志记录功能,那么显而易见的解决方案就是简单地记录所有查询。
这是您的问题的基本解决方案。您可以通过多种方式优化它:
log.Logger
,以便可以将其定向到特定的输出目标log.Logger
和sql.DB
对象 Package 在一个特殊的结构中,该结构将在查询完成时记录查询下面是said结构体的一个粗略示例:
以及如何使用它:
显然,您可以通过添加错误报告、查询持续时间等来再次细化此设计。
sqyvllje2#
现在有一个解决方案,不必用添加日志记录的 Package 器 Package
sql.DB
。sqldblogger有助于实现这一点,而无需更改现有的
sql.DB
代码。