package logger import ( "fmt" "os" "io" "bitbucket.org/nemt/nemt-portal-api/infra/config" "github.com/Sirupsen/logrus" ) // Logger is the default application logger compatible with the echo.Logger interface type Logger struct { cfg *config.Config *logrus.Entry } // InfoWriter returns the io.Writer for info level func (l *Logger) InfoWriter() io.Writer { return l.WriterLevel(logrus.InfoLevel) } // ErrorWriter returns the io.Writer for error level func (l *Logger) ErrorWriter() io.Writer { return l.WriterLevel(logrus.ErrorLevel) } // New returns a new Logger instance func New(cfg *config.Config) (*Logger, error) { if cfg.Log.LogToFile { file, err := os.Create(cfg.Log.Path) if err != nil { fmt.Printf("Error to create log file for library: %s\n", err.Error()) panic(err) } logrus.SetOutput(file) } logrus.SetFormatter(&logrus.JSONFormatter{}) if cfg.App.Debug { logrus.SetLevel(logrus.DebugLevel) } else { logrus.SetLevel(logrus.InfoLevel) } entry := logrus.WithFields(logrus.Fields{ "app": cfg.App.Name, }) return &Logger{cfg, entry}, nil }