chat_back_go/internal/logger/logger.go

47 lines
1,012 B
Go

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")
}
}