package logger import ( "sync" "easywish/config" "go.uber.org/zap" ) var ( instance *zap.Logger once sync.Once ) func NewLogger() *zap.Logger { once.Do(func() { cfg := config.GetConfig() var err error if cfg.Environment == "production" { instance, err = zap.NewProduction() } else { instance, err = zap.NewDevelopment() } if err != nil { panic("failed to initialize logger: " + err.Error()) } }) return instance } type SyncLogger struct { *zap.Logger } func NewSyncLogger(logger *zap.Logger) *SyncLogger { return &SyncLogger{logger} } func (s *SyncLogger) Close() error { return s.Sync() }