package logger import ( "log" "time" "github.com/evalphobia/logrus_sentry" "github.com/sirupsen/logrus" ) type Logger struct { *logrus.Logger tags map[string]string } func NewLogger(appSource string, dsn string) *Logger { logger := Logger{ Logger: logrus.New(), tags: make(map[string]string), } // logger.tags["app"] = appSource logger.Logger.SetReportCaller(true) // Добавим отображение строки // if dsn == "" { logger.Logger.Warn("sentry dsn is empty, its use is not possible") } else { if hook, err := logrus_sentry.NewSentryHook(dsn, []logrus.Level{ logrus.PanicLevel, logrus.FatalLevel, logrus.ErrorLevel, logrus.InfoLevel, logrus.WarnLevel, }); err != nil { log.Fatal(err) } else { hook.Timeout = 1 * time.Second hook.SetTagsContext(logger.tags) // logger.Logger.Hooks.Add(hook) } } return &logger }