47 lines
1,012 B
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")
|
|
}
|
|
}
|