package logger import ( log "github.com/sirupsen/logrus" "io" "os" "git.urec56.ru/urec/chat_back_go/config" ) type Logger struct { *log.Logger } var logger *Logger func NewLogger(cfg config.Config) *Logger { if logger != nil { return logger } logger = &Logger{Logger: log.New()} switch cfg.Mode { case "PROD": logger.SetFormatter(&log.JSONFormatter{}) logger.SetOutput(os.Stdout) logger.SetLevel(log.WarnLevel) case "STAGE": logger.SetFormatter(&log.TextFormatter{}) logger.SetOutput(os.Stdout) logger.SetLevel(log.InfoLevel) case "DEV": logger.SetFormatter(&log.TextFormatter{}) logger.SetOutput(os.Stdout) logger.SetLevel(log.DebugLevel) case "TEST": logger.SetOutput(io.Discard) logger.SetLevel(log.PanicLevel) default: logger.Fatalf("incorrect MODE was specified: %s", cfg.Mode) } logger.Infof("logger initialized") return logger }