package rest import ( "context" "git.nspix.com/golang/micro/log" "gorm.io/gorm/logger" "gorm.io/gorm/utils" "time" ) type Logger struct { LogLevel logger.LogLevel } func (lg *Logger) LogMode(level logger.LogLevel) logger.Interface { lg.LogLevel = level return lg } func (lg *Logger) Info(ctx context.Context, s string, i ...interface{}) { log.Infof(s, i...) } func (lg *Logger) Warn(ctx context.Context, s string, i ...interface{}) { log.Warnf(s, i...) } func (lg *Logger) Error(ctx context.Context, s string, i ...interface{}) { log.Errorf(s, i...) } func (lg *Logger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) { switch { case err != nil && lg.LogLevel >= logger.Error: sql, rows := fc() if rows == -1 { log.Errorf("SQL: execute %s error:%s in file %s", sql, err.Error(), utils.FileWithLineNum()) } else { log.Errorf("SQL: execute %s error:%s in file %s", sql, err.Error(), utils.FileWithLineNum()) } case lg.LogLevel == logger.Info: sql, rows := fc() if rows == -1 { log.Debugf("SQL: %s", sql) } else { log.Debugf("SQL: %s affect rows %d", sql, rows) } } }