47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
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))
|
|
}
|