46 lines
887 B
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
|
|
}
|