chat_back_go/internal/logger/logger.go

46 lines
887 B
Go

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
}