扫码一下
查看教程更方便
gorm 有一个 默认 logger
实现,默认情况下,它会打印慢 sql 和错误。
logger
接受的选项不多,我们可以在初始化时自定义它。
newlogger := logger.new(
log.new(os.stdout, "\r\n", log.lstdflags), // io writer(日志输出的目标,前缀和日志包含的内容——译者注)
logger.config{
slowthreshold: time.second, // 慢 sql 阈值
loglevel: logger.silent, // 日志级别
ignorerecordnotfounderror: true, // 忽略errrecordnotfound(记录未找到)错误
colorful: false, // 禁用彩色打印
},
)
// 全局模式
db, err := gorm.open(sqlite.open("test.db"), &gorm.config{
logger: newlogger,
})
// 新建会话模式
tx := db.session(&session{logger: newlogger})
tx.first(&user)
tx.model(&user).update("age", 18)
gorm 定义了这些日志级别:silent 、error 、warn 、info
db, err := gorm.open(sqlite.open("test.db"), &gorm.config{
logger: logger.default.logmode(logger.silent),
})
debug 单个操作,将当前操作的 log 级别调整为 logger.info
db.debug().where("name = ?", "jinzhu").first(&user{})
参考 gorm 的 默认 logger
来定义我们自己的 logger
logger
需要实现以下接口,它接受 context,所以你可以用它来追踪日志
type interface interface {
logmode(loglevel) interface
info(context.context, string, ...interface{})
warn(context.context, string, ...interface{})
error(context.context, string, ...interface{})
trace(ctx context.context, begin time.time, fc func() (sql string, rowsaffected int64), err error)
}