package repo import ( "context" "fmt" "gorm.io/gorm/logger" "samba/pkg/log" "strings" "time" ) type dbLogger struct{} func (l *dbLogger) LogMode(_ logger.LogLevel) logger.Interface { // 可以在这里根据 logLevel 做出不同的处理 return l } func (l *dbLogger) Info(_ context.Context, msg string, args ...interface{}) { log.Info(fmt.Sprintf(msg, args...)) } func (l *dbLogger) Warn(_ context.Context, msg string, args ...interface{}) { log.Warn(fmt.Sprintf(msg, args...)) } func (l *dbLogger) Error(_ context.Context, msg string, args ...interface{}) { s := fmt.Sprintf(msg, args...) if !strings.Contains(s, "record not found") { // 只有当错误不是“record not found”时才记录 log.Error(fmt.Sprintf(msg, args...)) } } func (l *dbLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) { if err != nil { // SQL 执行错误 l.Error(ctx, "Error occurred while executing SQL: %v", err) return } sql, rows := fc() elapsed := time.Since(begin) log.Debug(fmt.Sprintf("SQL: %s, RowsAffected: %d, Elapsed: %s\n", sql, rows, elapsed)) }