package logger import ( log "github.com/sirupsen/logrus" "os" "git.urec56.ru/urec/chat_back_go/config" ) //go:generate mockgen -source=logger.go -destination=mocks/mock.go type Log interface { log.FieldLogger } type Logger struct { *log.Logger } func NewLogger(cfg config.Config) *Logger { logger := &Logger{Logger: log.New()} configureLogger(cfg, logger) return logger } func configureLogger(cfg config.Config, logger *Logger) { 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.SetFormatter(&log.TextFormatter{}) logger.SetOutput(os.Stdout) logger.SetLevel(log.DebugLevel) default: logger.Fatal("incorrect MODE was specified") } }