流程(创建Logger)
入口
// 定义Logger类型标识
type loggerType string
const (
LoggerTypeGorm = "gorm"
LoggerTypeES = "es"
)
// 定义一个函数用于返回创建Logger的方法
type CreateLoggerFunc func(logger *zap.SugaredLogger) interface{}
// 调用创建Logger的具体方法
func CreateLogger(loggerType loggerType) CreateLoggerFunc {
switch loggerType {
case LoggerTypeGorm:
return newGormLogger()
case LoggerTypeES:
return newESLogger()
default:
return newZapLogger()
}
}
// Init 日志类初始化
func Init() {
// gorm logger
GLogger = CreateLogger(LoggerTypeGorm)(
createSugarLogger(
getEncoder(),
getLogWriter(config.GlobalConfig.Log.MongoLog),
zapcore.Level(config.GlobalConfig.Log.LogLevel),
),
).(*GormLogger)
// es logger
ELogger = CreateLogger(LoggerTypeES)(
createSugarLogger(
getEncoder(),
getLogWriter(config.GlobalConfig.Log.EsLog),
zapcore.Level(config.GlobalConfig.Log.LogLevel),
),
).(*ESLogger)
}
Gorm Logger
// 定义Gorm struct
type GormLogger struct {
logger *zap.SugaredLogger
LogLevel logger.LogLevel
SlowThreshold time.Duration
Colorful bool
IgnoreRecordNotFoundError bool
ParameterizedQueries bool
}
// newGormLogger GormLogger 初始化
func newGormLogger() CreateLoggerFunc {
return func(lg *zap.SugaredLogger) interface{} {
return &GormLogger{
logger: lg,
LogLevel: logger.Info,
SlowThreshold: 0,
Colorful: false,
IgnoreRecordNotFoundError: false,
ParameterizedQueries: false,
}
}
}
ES Logger
type ESLogger struct {
logger *zap.SugaredLogger
}
// newESLogger ESLogger 初始化
func newESLogger() CreateLoggerFunc {
return func(logger *zap.SugaredLogger) interface{} {
return &ESLogger{
logger: logger,
}
}
}
评论区