1package errortracking 2 3import "github.com/getsentry/sentry-go" 4 5// Tracker is an abstraction for error tracking. 6type Tracker interface { 7 // Capture reports an error to the error reporting service 8 Capture(err error, opts ...CaptureOption) 9} 10 11var ( 12 defaultTracker = newSentryTracker(sentry.CurrentHub()) 13) 14 15// DefaultTracker returns the default global error tracker. 16func DefaultTracker() Tracker { 17 return defaultTracker 18} 19 20// NewTracker constructs a new Tracker with the provided options. 21func NewTracker(opts ...TrackerOption) (Tracker, error) { 22 client, err := sentry.NewClient(trackerOptionsToSentryClientOptions(opts...)) 23 if err != nil { 24 return nil, err 25 } 26 hub := sentry.NewHub(client, sentry.NewScope()) 27 return newSentryTracker(hub), nil 28} 29 30func trackerOptionsToSentryClientOptions(opts ...TrackerOption) sentry.ClientOptions { 31 config := applyTrackerOptions(opts) 32 33 return sentry.ClientOptions{ 34 Dsn: config.sentryDSN, 35 Release: config.version, 36 Environment: config.sentryEnvironment, 37 } 38} 39