登录
首页 >  Golang >  Go问答

如何集成哨兵

来源:stackoverflow

时间:2024-04-05 17:30:34 286浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《如何集成哨兵》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

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


解决方案


谢谢,@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}
}

然后添加到app.go中的buffalo选项

logger:      sentrylogger(logger.debuglevel),

看来您需要一个哨兵日志记录中间件。每个大型日志库都应该有自己的中间件实现。例如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,然后自己将这些条目发布到哨兵。

今天关于《如何集成哨兵》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>