InfoSphere/GORM 中文版/ 返回书籍
Tutorials

Logger

qianmoQqianmoQ· 更新于 2026-09-15· 阅读 5 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Logger

Gorm has a default logger implementation, it will print Slow SQL and happening errors by default

The logger accepts few options, you can customize it during initialization, for example:

newLogger := logger.New(
  log.New(os.Stdout, "\r\n", log.LstdFlags), 
  logger.Config{
    SlowThreshold:              time.Second,   
    LogLevel:                   logger.Silent, 
    IgnoreRecordNotFoundError: true,           
    ParameterizedQueries:      true,           
    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)

Log Levels

GORM defined log levels: Silent, Error, Warn, Info

db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
  Logger: logger.Default.LogMode(logger.Silent),
})

Debug

Debug a single operation, change current operation’s log level to logger.Info

db.Debug().Where("name = ?", "jinzhu").First(&User{})

Customize Logger

Refer to GORM’s default logger for how to define your own one

The logger needs to implement the following interface, it accepts context, so you can use it for log tracing

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)
}

GitHub tag (latest SemVer)

评论

登录后参与评论

正在加载评论…