如何集成哨兵
How to integrate Sentry
我想捕获生产环境中的所有错误并将它们发送给哨兵。但是我不明白如何将它添加为中间件。我是否需要编写一个自定义记录器而不是实现 logger.Logger 接口,或者我可以以不同的方式来做?
您似乎想要一个哨兵日志记录中间件。每个大型日志库都应该有自己的中间件实现。例如logrus
import (
"github.com/sirupsen/logrus"
"github.com/evalphobia/logrus_sentry"
)
func main() {
log := logrus.New()
hook, err := logrus_sentry.NewSentryHook(YOUR_DSN, []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
})
if err == nil {
log.Hooks.Add(hook)
}
}
如果您想创建自己的(假设您使用的是 logrus),则必须实施 interface for the hook 然后 post 自己将这些条目发送到哨兵。
谢谢@martinni39,我根据你的代码和 Buffalo 手册中的代码创建了这个函数:
func SentryLogger(lvl logger.Level) logger.FieldLogger {
l := logrus.New()
l.Level = lvl
levels := []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
}
hook, err := logrus_sentry.NewSentryHook("your sentry dsn", levels)
hook.StacktraceConfiguration.Enable = true
hook.StacktraceConfiguration.IncludeErrorBreadcrumb = true
if err == nil {
l.Hooks.Add(hook)
}
return logger.Logrus{FieldLogger: l}
}
然后添加到buffalo选项中app.go
Logger: SentryLogger(logger.DebugLevel),
我想捕获生产环境中的所有错误并将它们发送给哨兵。但是我不明白如何将它添加为中间件。我是否需要编写一个自定义记录器而不是实现 logger.Logger 接口,或者我可以以不同的方式来做?
您似乎想要一个哨兵日志记录中间件。每个大型日志库都应该有自己的中间件实现。例如logrus
import (
"github.com/sirupsen/logrus"
"github.com/evalphobia/logrus_sentry"
)
func main() {
log := logrus.New()
hook, err := logrus_sentry.NewSentryHook(YOUR_DSN, []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
})
if err == nil {
log.Hooks.Add(hook)
}
}
如果您想创建自己的(假设您使用的是 logrus),则必须实施 interface for the hook 然后 post 自己将这些条目发送到哨兵。
谢谢@martinni39,我根据你的代码和 Buffalo 手册中的代码创建了这个函数:
func SentryLogger(lvl logger.Level) logger.FieldLogger {
l := logrus.New()
l.Level = lvl
levels := []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
}
hook, err := logrus_sentry.NewSentryHook("your sentry dsn", levels)
hook.StacktraceConfiguration.Enable = true
hook.StacktraceConfiguration.IncludeErrorBreadcrumb = true
if err == nil {
l.Hooks.Add(hook)
}
return logger.Logrus{FieldLogger: l}
}
然后添加到buffalo选项中app.go
Logger: SentryLogger(logger.DebugLevel),