sql/gorm: Use zerolog logger
This commit is contained in:
parent
6f1ba24761
commit
7006277409
6 changed files with 125 additions and 8 deletions
|
|
@ -52,9 +52,13 @@ func (sql *SQL) QueryTable(ctx context.Context, silent bool, table string) (*gor
|
|||
}
|
||||
|
||||
// gorm configuration
|
||||
config := &gorm.Config{}
|
||||
config := &gorm.Config{
|
||||
Logger: newGormLogger(),
|
||||
}
|
||||
if silent {
|
||||
config.Logger = logger.Default.LogMode(logger.Silent)
|
||||
config.Logger = config.Logger.LogMode(logger.Silent)
|
||||
} else {
|
||||
config.Logger = config.Logger.LogMode(logger.Info)
|
||||
}
|
||||
|
||||
// mysql connection
|
||||
|
|
|
|||
74
internal/dis/component/sql/logger.go
Normal file
74
internal/dis/component/sql/logger.go
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
package sql
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"gorm.io/gorm/logger"
|
||||
"gorm.io/gorm/utils"
|
||||
)
|
||||
|
||||
// logger implements "gorm/logger.Interface"
|
||||
type gormLogger struct {
|
||||
Level logger.LogLevel
|
||||
SlowThreshold time.Duration
|
||||
IgnoreRecordNotFoundError bool
|
||||
}
|
||||
|
||||
func newGormLogger() logger.Interface {
|
||||
return &gormLogger{
|
||||
Level: logger.Info,
|
||||
SlowThreshold: 200 * time.Millisecond,
|
||||
IgnoreRecordNotFoundError: false,
|
||||
}
|
||||
}
|
||||
|
||||
func (gl *gormLogger) LogMode(level logger.LogLevel) logger.Interface {
|
||||
new := *gl
|
||||
new.Level = level
|
||||
return &new
|
||||
}
|
||||
|
||||
func (gl *gormLogger) Info(ctx context.Context, format string, v ...interface{}) {
|
||||
if gl.Level < logger.Info {
|
||||
return
|
||||
}
|
||||
zerolog.Ctx(ctx).Info().Msgf(format, v...)
|
||||
}
|
||||
func (gl *gormLogger) Warn(ctx context.Context, format string, v ...interface{}) {
|
||||
if gl.Level < logger.Warn {
|
||||
return
|
||||
}
|
||||
zerolog.Ctx(ctx).Warn().Msgf(format, v...)
|
||||
}
|
||||
func (gl *gormLogger) Error(ctx context.Context, format string, v ...interface{}) {
|
||||
if gl.Level < logger.Error {
|
||||
return
|
||||
}
|
||||
zerolog.Ctx(ctx).Error().Msgf(format, v...)
|
||||
}
|
||||
func (gl *gormLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) {
|
||||
if gl.Level < logger.Silent {
|
||||
return
|
||||
}
|
||||
|
||||
elapsed := time.Since(begin)
|
||||
switch {
|
||||
case err != nil && gl.Level >= logger.Error && (!errors.Is(err, logger.ErrRecordNotFound) || !gl.IgnoreRecordNotFoundError):
|
||||
sql, rows := fc()
|
||||
src := utils.FileWithLineNum()
|
||||
|
||||
zerolog.Ctx(ctx).Err(err).Str("src", src).Int64("rows", rows).Dur("elapsed", elapsed).Str("sql", sql).Msg("GORM")
|
||||
case elapsed > gl.SlowThreshold && gl.SlowThreshold != 0 && gl.Level >= logger.Warn:
|
||||
sql, rows := fc()
|
||||
src := utils.FileWithLineNum()
|
||||
zerolog.Ctx(ctx).Warn().Str("src", src).Int64("rows", rows).Dur("elapsed", elapsed).Str("sql", sql).Msgf("GORM: Slow SQL >= ", gl.SlowThreshold)
|
||||
case gl.Level == logger.Info:
|
||||
sql, rows := fc()
|
||||
src := utils.FileWithLineNum()
|
||||
|
||||
zerolog.Ctx(ctx).Debug().Str("src", src).Int64("rows", rows).Dur("elapsed", elapsed).Str("sql", sql).Msg("GORM")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue