记录查询
bundebug
为了快速调试,您可以将执行的查询打印到标准输出。首先,您需要安装 bundebug
包
go get github.com/uptrace/bun/extra/bundebug
然后添加提供的查询钩子,默认情况下它只打印失败的查询
import "github.com/uptrace/bun/extra/bundebug"
db := bun.NewDB(sqldb, dialect)
db.AddQueryHook(bundebug.NewQueryHook())
要打印所有查询,请使用 WithVerbose
选项
bundebug.NewQueryHook(bundebug.WithVerbose(true))
您也可以默认禁用钩子,并在需要时使用环境变量来启用它
bundebug.NewQueryHook(
// disable the hook
bundebug.WithEnabled(false),
// BUNDEBUG=1 logs failed queries
// BUNDEBUG=2 logs all queries
bundebug.FromEnv("BUNDEBUG"),
)
Logrus 钩子
您也可以使用 logrusbun 使用 Logrus 记录执行的查询
go get github.com/oiime/logrusbun
使用 QueryHookOptions
来调整日志级别和行为
db := bun.NewDB(sqldb, dialect)
log := logrus.New()
db.AddQueryHook(logrusbun.NewQueryHook(logrusbun.QueryHookOptions{Logger: log}))
Zap 钩子
go get github.com/alexlast/bunzap
示例
db := bun.NewDB(sqldb, dialect)
logger, err := zap.NewProduction()
db.AddQueryHook(bunzap.NewQueryHook(bunzap.QueryHookOptions{
Logger: logger,
SlowDuration: 200 * time.Millisecond, // Omit to log all operations as debug
}))