Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 4m44s
78 lines
1.8 KiB
Go
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...)
|
|
}
|
|
}
|