gitlab.com/gitlab-org/labkit@v1.21.0/errortracking/tracker.go (about) 1 package errortracking 2 3 import "github.com/getsentry/sentry-go" 4 5 // Tracker is an abstraction for error tracking. 6 type Tracker interface { 7 // Capture reports an error to the error reporting service 8 Capture(err error, opts ...CaptureOption) 9 } 10 11 var ( 12 defaultTracker = newSentryTracker(sentry.CurrentHub()) 13 ) 14 15 // DefaultTracker returns the default global error tracker. 16 func DefaultTracker() Tracker { 17 return defaultTracker 18 } 19 20 // NewTracker constructs a new Tracker with the provided options. 21 func 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 30 func 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 }