hi-server/pkg/logger/gorm.go
shanshanzhong ab38cd4943
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 4m44s
x
2026-04-26 21:12:22 -07:00

78 lines
1.8 KiB
Go

package logger
import (
"context"
"fmt"
"time"
"gorm.io/gorm/logger"
)
type GormLogger struct {
SlowThreshold time.Duration
}
const TAG = "[GORM]"
func (l *GormLogger) LogMode(logger.LogLevel) logger.Interface {
var sysLevel string
switch logLevel {
case DebugLevel:
sysLevel = "debug"
case InfoLevel:
sysLevel = "info"
case SevereLevel:
sysLevel = "severe"
case disableLevel:
sysLevel = "disable"
default:
sysLevel = "unknown"
}
Debugf("%s System Log Level is %s", TAG, sysLevel)
return l
}
func (l *GormLogger) Info(ctx context.Context, str string, args ...interface{}) {
WithContext(ctx).WithCallerSkip(6).Debugf("%s Info: %s", TAG, fmt.Sprintf(str, args...))
}
func (l *GormLogger) Warn(ctx context.Context, str string, args ...interface{}) {
WithContext(ctx).WithCallerSkip(6).Debugf("%s Warn: %s", TAG, fmt.Sprintf(str, args...))
}
func (l *GormLogger) Error(ctx context.Context, str string, args ...interface{}) {
WithContext(ctx).WithCallerSkip(6).Errorf("%s Error: %s", TAG, fmt.Sprintf(str, args...))
}
func (l *GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) {
sql, rowsAffected := fc()
duration := time.Since(begin)
fields := []LogField{
{
Key: "sql",
Value: sql,
},
{
Key: "rows",
Value: rowsAffected,
},
}
if err != nil {
fields = append(fields, LogField{
Key: "error",
Value: err.Error(),
})
WithContext(ctx).WithCallerSkip(6).WithDuration(duration).Errorw(TAG, fields...)
return
}
if l.SlowThreshold > 0 && duration >= l.SlowThreshold {
WithContext(ctx).WithCallerSkip(6).WithDuration(duration).Sloww(fmt.Sprintf("%s SQL Slow", TAG), fields...)
return
}
if shallLog(DebugLevel) {
WithContext(ctx).WithCallerSkip(6).WithDuration(duration).Debugw(fmt.Sprintf("%s SQL Executed", TAG), fields...)
}
}