Browse Source

添加全局日志功能

lxg 3 năm trước cách đây
mục cha
commit
2811929070
1 tập tin đã thay đổi với 58 bổ sung0 xóa
  1. 58 0
      pkg/logger/logger.go

+ 58 - 0
pkg/logger/logger.go

@@ -0,0 +1,58 @@
+package logger
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"git.nspix.com/golang/micro/log"
+	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
+	"gorm.io/gorm/utils"
+	"time"
+)
+
+type Logger struct {
+	LogLevel      logger.LogLevel
+	SlowThreshold time.Duration
+}
+
+func (l Logger) LogMode(level logger.LogLevel) logger.Interface {
+	l.LogLevel = level
+	return l
+}
+
+func (l Logger) Info(ctx context.Context, s string, i ...interface{}) {
+	log.Infof("[SQL] "+s, i...)
+}
+
+func (l Logger) Warn(ctx context.Context, s string, i ...interface{}) {
+	log.Warnf("[SQL] "+s, i...)
+}
+
+func (l Logger) Error(ctx context.Context, s string, i ...interface{}) {
+	log.Errorf("[SQL] "+s, i...)
+}
+
+func (l Logger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) {
+	elapsed := time.Since(begin)
+	switch {
+	case err != nil && l.LogLevel >= logger.Error && (!errors.Is(err, gorm.ErrRecordNotFound)):
+		sql, rows := fc()
+		if rows == -1 {
+			l.Error(ctx, sql)
+		} else {
+			l.Error(ctx, sql)
+		}
+	case elapsed > l.SlowThreshold && l.SlowThreshold != 0:
+		sql, _ := fc()
+		slowLog := fmt.Sprintf("slow sql [%s] spend %s in %s", sql, elapsed, utils.FileWithLineNum())
+		l.Warn(ctx, slowLog)
+	case l.LogLevel == logger.Info:
+		sql, rows := fc()
+		if rows == -1 {
+			log.Debugf("[SQL] %s", sql)
+		} else {
+			log.Debugf("[SQL] %s -> %d", sql, rows)
+		}
+	}
+}