侧边栏壁纸
  • 累计撰写 38 篇文章
  • 累计创建 81 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

简单工厂(一个工厂)

小李同学
2024-02-25 / 0 评论 / 0 点赞 / 293 阅读 / 205 字 / 正在检测是否收录...

流程(创建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,
		}
	}
}
0

评论区