package logger import ( "sync" "easywish/config" "go.uber.org/zap" ) type Logger interface { Get() *zap.Logger Sync() error } type loggerImpl struct { } func NewLogger() Logger { return &loggerImpl{} } var ( logger *zap.Logger once sync.Once ) func (l *loggerImpl) Get() *zap.Logger { once.Do(func() { var err error cfg := config.GetConfig() if cfg.Environment == "production" { logger, err = zap.NewProduction() } else { logger, err = zap.NewDevelopment() } if err != nil { panic(err) } }) return logger } func (l *loggerImpl) Sync() error { return logger.Sync() }