63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package crashreport
|
|
|
|
import (
|
|
"github.com/apex/log"
|
|
"github.com/getsentry/raven-go"
|
|
)
|
|
|
|
// Disabled flag is used to globally disable crash reporting and make all the
|
|
// crash reporting logic a no-op.
|
|
var Disabled = false
|
|
|
|
var client *raven.Client
|
|
|
|
// CapturePanic is a wrapper around raven.CapturePanic that becomes a noop if
|
|
// `Disabled` is set to true.
|
|
func CapturePanic(f func(), tags map[string]string) (interface{}, string) {
|
|
if Disabled == true {
|
|
return nil, ""
|
|
}
|
|
return client.CapturePanic(f, tags)
|
|
}
|
|
|
|
// CapturePanicAndWait is a wrapper around raven.CapturePanicAndWait that becomes a noop if
|
|
// `Disabled` is set to true.
|
|
func CapturePanicAndWait(f func(), tags map[string]string) (interface{}, string) {
|
|
if Disabled == true {
|
|
return nil, ""
|
|
}
|
|
return client.CapturePanicAndWait(f, tags)
|
|
}
|
|
|
|
// CaptureError is a wrapper around raven.CaptureError
|
|
func CaptureError(err error, tags map[string]string) string {
|
|
if Disabled == true {
|
|
return ""
|
|
}
|
|
return client.CaptureError(err, tags)
|
|
}
|
|
|
|
// CaptureErrorAndWait is a wrapper around raven.CaptureErrorAndWait
|
|
func CaptureErrorAndWait(err error, tags map[string]string) string {
|
|
if Disabled == true {
|
|
return ""
|
|
}
|
|
return client.CaptureErrorAndWait(err, tags)
|
|
}
|
|
|
|
// Wait will block on sending messages to the sentry server
|
|
func Wait() {
|
|
if Disabled == false {
|
|
log.Info("sending exception backtrace")
|
|
client.Wait()
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
var err error
|
|
client, err = raven.NewClient("https://cb4510e090f64382ac371040c19b2258:8448daeebfa643c289ef398f8645980b@sentry.io/1234954", nil)
|
|
if err != nil {
|
|
log.WithError(err).Error("failed to create a raven client")
|
|
}
|
|
}
|