sentry.go 930 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package alerter
  2. import (
  3. "context"
  4. "reflect"
  5. "github.com/getsentry/sentry-go"
  6. )
  7. type SentryAlerter struct {
  8. client *sentry.Client
  9. }
  10. func noIntegrations(ints []sentry.Integration) []sentry.Integration {
  11. return []sentry.Integration{}
  12. }
  13. func NewSentryAlerter(sentryDSN string) (*SentryAlerter, error) {
  14. sentryClient, err := sentry.NewClient(sentry.ClientOptions{
  15. Dsn: sentryDSN,
  16. AttachStacktrace: true,
  17. Integrations: noIntegrations,
  18. })
  19. if err != nil {
  20. return nil, err
  21. }
  22. return &SentryAlerter{
  23. client: sentryClient,
  24. }, nil
  25. }
  26. func (s *SentryAlerter) SendAlert(ctx context.Context, err error, data map[string]interface{}) {
  27. s.client.CaptureEvent(&sentry.Event{
  28. Message: err.Error(),
  29. Extra: data,
  30. Exception: []sentry.Exception{
  31. {
  32. Value: err.Error(),
  33. Type: reflect.TypeOf(err).String(),
  34. Stacktrace: sentry.ExtractStacktrace(err),
  35. },
  36. },
  37. }, nil, nil)
  38. }