Go 如何整合哨兵

Go 如何整合哨兵,go,sentry,buffalo,Go,Sentry,Buffalo,我希望捕获生产环境中的所有错误,并将它们发送给哨兵。但我不明白如何将其添加为中间件。我是否需要编写一个自定义记录器而不是实现logger.logger接口,或者我可以以不同的方式执行它?似乎您需要一个sentry日志中间件。每个大型日志库都应该有自己的中间件实现。比如说 如果您想创建自己的日志(假设您使用的是logrus),则必须实现,然后自己将这些条目发布到sentry。似乎您需要一个sentry日志中间件。每个大型日志库都应该有自己的中间件实现。比如说 如果您想创建自己的(假设您使用的是lo

我希望捕获生产环境中的所有错误,并将它们发送给哨兵。但我不明白如何将其添加为中间件。我是否需要编写一个自定义记录器而不是实现logger.logger接口,或者我可以以不同的方式执行它?

似乎您需要一个sentry日志中间件。每个大型日志库都应该有自己的中间件实现。比如说


如果您想创建自己的日志(假设您使用的是logrus),则必须实现,然后自己将这些条目发布到sentry。

似乎您需要一个sentry日志中间件。每个大型日志库都应该有自己的中间件实现。比如说


如果您想创建自己的(假设您使用的是logrus),您必须实现,然后将这些条目发布到sentry。

谢谢,@martinni39基于您的代码和水牛手册中的代码,我创建了此功能:

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}
}
然后添加到app.go中的buffalo选项

Logger:      SentryLogger(logger.DebugLevel),

谢谢,@martinni39基于您的代码和布法罗手册中的代码,我创建了此功能:

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}
}
然后添加到app.go中的buffalo选项

Logger:      SentryLogger(logger.DebugLevel),

你试过看文档吗?我在官方岗哨上找到了这个。它没有合并到母版中,但我想明天试试。你看过文档了吗?我在官方岗哨上找到了这个。你能更新并将答案标记为已接受吗?你能更新并将答案标记为已接受吗