gin-vue-admin/server/initialize/internal/logger.go

67 lines
1.8 KiB
Go
Raw Normal View History

package internal
2020-11-24 19:27:16 +08:00
import (
"context"
2020-11-24 19:27:16 +08:00
"fmt"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
2021-08-21 11:01:34 +08:00
"gorm.io/gorm/logger"
"time"
2020-11-24 19:27:16 +08:00
)
type ZapLogger struct {
log *zap.Logger
2020-11-24 19:27:16 +08:00
}
func NewZapLogger() logger.Interface {
newLogger := global.GVA_LOG.With(zap.String("type", "sql"))
return &ZapLogger{
log: newLogger,
}
2020-11-24 19:27:16 +08:00
}
func (l *ZapLogger) LogMode(level logger.LogLevel) logger.Interface {
var newLevel zapcore.Level
switch level {
case logger.Silent:
newLevel = zapcore.FatalLevel
case logger.Error:
newLevel = zapcore.ErrorLevel
case logger.Warn:
newLevel = zapcore.WarnLevel
case logger.Info:
newLevel = zapcore.InfoLevel
2020-11-24 19:27:16 +08:00
}
// 这里为log设置新的level
l.log = l.log.WithOptions(zap.IncreaseLevel(newLevel))
return l
}
func (l *ZapLogger) Info(ctx context.Context, msg string, data ...interface{}) {
l.log.Info(fmt.Sprintf(msg, data...))
}
func (l *ZapLogger) Warn(ctx context.Context, msg string, data ...interface{}) {
l.log.Warn(fmt.Sprintf(msg, data...))
}
func (l *ZapLogger) Error(ctx context.Context, msg string, data ...interface{}) {
l.log.Error(fmt.Sprintf(msg, data...))
}
func (l *ZapLogger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) {
elapsed := time.Since(begin)
switch {
case err != nil && l.log.Core().Enabled(zap.ErrorLevel):
sql, _ := fc()
l.log.Error("trace", zap.String("elapsed", elapsed.String()), zap.String("sql", sql), zap.Error(err))
case elapsed > 200*time.Millisecond && l.log.Core().Enabled(zap.WarnLevel):
sql, _ := fc()
l.log.Warn("trace", zap.String("elapsed", elapsed.String()), zap.String("sql", sql))
case l.log.Core().Enabled(zap.InfoLevel):
sql, _ := fc()
l.log.Info("trace", zap.String("elapsed", elapsed.String()), zap.String("sql", sql))
2020-11-24 21:17:07 +08:00
}
2020-11-24 19:27:16 +08:00
}