You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
900 B

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