ロガー

ロガー

Gormは デフォルトのロガー実装を持っています。デフォルトでは、遅いSQLとエラーをロギングします。

ロガーはいくつかのオプションを受け付けます。初期化中にカスタマイズできます。例:

newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // Slow SQL threshold
LogLevel: logger.Silent, // Log level
Colorful: false, // Disable color
},
)

// Globally mode
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
Logger: newLogger,
})

// Continuous session mode
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

単一の操作をデバッグし、現在の操作のログレベルをlogger.Info に変更します

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

ロガーのカスタマイズ

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() (string, int64), err error)
}