记录查询

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 钩子

您也可以使用 bunzap在新窗口中打开 使用 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
}))