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  }