123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package main
- import (
- "net/http"
- "strings"
- "github.com/bugsnag/bugsnag-go"
- "github.com/getsentry/raven-go"
- "github.com/honeybadger-io/honeybadger-go"
- )
- var (
- bugsnagEnabled bool
- honeybadgerEnabled bool
- sentryEnabled bool
- headersReplacer = strings.NewReplacer("-", "_")
- )
- func initErrorsReporting() {
- if len(conf.BugsnagKey) > 0 {
- bugsnag.Configure(bugsnag.Configuration{
- APIKey: conf.BugsnagKey,
- ReleaseStage: conf.BugsnagStage,
- })
- bugsnagEnabled = true
- }
- if len(conf.HoneybadgerKey) > 0 {
- honeybadger.Configure(honeybadger.Configuration{
- APIKey: conf.HoneybadgerKey,
- Env: conf.HoneybadgerEnv,
- })
- honeybadgerEnabled = true
- }
- if len(conf.SentryDSN) > 0 {
- raven.SetDSN(conf.SentryDSN)
- raven.SetEnvironment(conf.SentryEnvironment)
- raven.SetRelease(conf.SentryRelease)
- sentryEnabled = true
- }
- }
- func reportError(err error, req *http.Request) {
- if bugsnagEnabled {
- bugsnag.Notify(err, req)
- }
- if honeybadgerEnabled {
- headers := make(honeybadger.CGIData)
- for k, v := range req.Header {
- key := "HTTP_" + headersReplacer.Replace(strings.ToUpper(k))
- headers[key] = v[0]
- }
- honeybadger.Notify(err, req.URL, headers)
- }
- if sentryEnabled {
- raven.SetHttpContext(raven.NewHttp(req))
- raven.CaptureError(err, nil)
- }
- }
|