errors_reporting.go 971 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "net/http"
  4. "strings"
  5. "github.com/bugsnag/bugsnag-go"
  6. "github.com/honeybadger-io/honeybadger-go"
  7. )
  8. var (
  9. bugsnagEnabled bool
  10. honeybadgerEnabled bool
  11. headersReplacer = strings.NewReplacer("-", "_")
  12. )
  13. func initErrorsReporting() {
  14. if len(conf.BugsnagKey) > 0 {
  15. bugsnag.Configure(bugsnag.Configuration{
  16. APIKey: conf.BugsnagKey,
  17. ReleaseStage: conf.BugsnagStage,
  18. })
  19. bugsnagEnabled = true
  20. }
  21. if len(conf.HoneybadgerKey) > 0 {
  22. honeybadger.Configure(honeybadger.Configuration{
  23. APIKey: conf.HoneybadgerKey,
  24. Env: conf.HoneybadgerEnv,
  25. })
  26. honeybadgerEnabled = true
  27. }
  28. }
  29. func reportError(err error, req *http.Request) {
  30. if bugsnagEnabled {
  31. bugsnag.Notify(err, req)
  32. }
  33. if honeybadgerEnabled {
  34. headers := make(honeybadger.CGIData)
  35. for k, v := range req.Header {
  36. key := "HTTP_" + headersReplacer.Replace(strings.ToUpper(k))
  37. headers[key] = v[0]
  38. }
  39. honeybadger.Notify(err, req.URL, headers)
  40. }
  41. }