Slide 17
Slide 17 text
Copyright © ENECHANGE Ltd. All Rights Reserved. | 17
● DB接続時、独自ロガーにデ
フォルトのslogを渡す
初期化 - DB
l := NewLogger(
glogger.Config{
SlowThreshold: time.Second,
LogLevel: logLevel,
Colorful: true,
},
slog.Default(), // デフォルトのslogを
渡す
)
dbMs, err =
gorm.Open(sqlserver.Open(dsn),
&gorm.Config{
Logger: l,
CreateBatchSize: 100,
})
● gorm/logger interfaceを満たし、
slogを利用する独自ロガーを作成
type DBLogger struct {
log *slog.Logger // slogを利用
gLogger.Config
}
// gorm/loggerを満たす
var _ gLogger.Interface = &DBLogger{}
func NewLogger(config gLogger.Config, logger *slog.Logger)
gLogger.Interface {
return &DBLogger{
log: logger,
Config: config,
}
}
func (l DBLogger) Trace(ctx context.Context, begin
time.Time, fc func() (string, int64), err error) {
sql, _ := fc()
l.log.InfoContext(ctx, sql) // slogを利用(context付き)
}