Sentry Go Versions Save

The official Go SDK for Sentry (sentry.io)

v0.20.0

1 year ago

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.20.0.

Note: this release has some breaking changes, which are listed below.

Breaking Changes

  • Remove the following methods: Scope.SetTransaction(), Scope.Transaction() (#605)

    Span.Name should be used instead to access the transaction's name.

    For example, the following TracesSampler function should be now written as follows:

    Before:

    TracesSampler: func(ctx sentry.SamplingContext) float64 {
      hub := sentry.GetHubFromContext(ctx.Span.Context())
      if hub.Scope().Transaction() == "GET /health" {
        return 0
      }
      return 1
    },
    

    After:

    TracesSampler: func(ctx sentry.SamplingContext) float64 {
      if ctx.Span.Name == "GET /health" {
        return 0
      }
      return 1
    },
    

Features

  • Add Span.SetContext() method (#599)
    • It is recommended to use it instead of hub.Scope().SetContext when setting or updating context on transactions.
  • Add DebugMeta interface to Event and extend Frame structure with more fields (#606)
    • More about DebugMeta interface here.

Bug Fixes

  • [otel] Fix missing OpenTelemetry context on some events (#599, #605)
  • [otel] Better handling for HTTP span attributes (#610)

Misc

v0.19.0

1 year ago

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.19.0.

Features

  • Add support for exception mechanism metadata (#564)
    • More about exception mechanisms here.

Bug Fixes

  • [otel] Use the correct "trace" context when sending a Sentry error (#580)

Misc

  • Drop support for Go 1.17, add support for Go 1.20 (#563)
    • According to our policy, we're officially supporting the last three minor releases of Go.
  • Switch repository license to MIT (#583)
    • More about Sentry licensing here.
  • Bump golang.org/x/text minimum required version to 0.3.8 (#586)

v0.18.0

1 year ago

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.18.0. This release contains initial support for OpenTelemetry and various other bug fixes and improvements.

Note: This is the last release supporting Go 1.17.

Features

  • Initial support for OpenTelemetry. You can now send all your OpenTelemetry spans to Sentry.

    Install the otel module

    go get github.com/getsentry/sentry-go \
           github.com/getsentry/sentry-go/otel
    

    Configure the Sentry and OpenTelemetry SDKs

    import (
        "go.opentelemetry.io/otel"
        sdktrace "go.opentelemetry.io/otel/sdk/trace"
        "github.com/getsentry/sentry-go"
        "github.com/getsentry/sentry-go/otel"
        // ...
    )
    
    // Initlaize the Sentry SDK
    sentry.Init(sentry.ClientOptions{
        Dsn:              "__DSN__",
        EnableTracing:    true,
        TracesSampleRate: 1.0,
    })
    
    // Set up the Sentry span processor
    tp := sdktrace.NewTracerProvider(
        sdktrace.WithSpanProcessor(sentryotel.NewSentrySpanProcessor()),
        // ...
    )
    otel.SetTracerProvider(tp)
    
    // Set up the Sentry propagator
    otel.SetTextMapPropagator(sentryotel.NewSentryPropagator())
    

    You can read more about using OpenTelemetry with Sentry in our docs.

Bug Fixes

  • Do not freeze the Dynamic Sampling Context when no Sentry values are present in the baggage header (#532)
  • Create a frozen Dynamic Sampling Context when calling span.ToBaggage() (#566)
  • Fix baggage parsing and encoding in vendored otel package (#568)

Misc

  • Add Span.SetDynamicSamplingContext() (#539)
  • Add various getters for Dsn (#540)
  • Add SpanOption::SpanSampled (#546)
  • Add Span.SetData() (#542)
  • Add Span.IsTransaction() (#543)
  • Add Span.GetTransaction() method (#558)

v0.17.0

1 year ago

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.17.0. This release contains a new BeforeSendTransaction hook option and corrects two regressions introduced in 0.16.0.

Features

  • Add BeforeSendTransaction hook to ClientOptions (#517)
    • Here's an example of how BeforeSendTransaction can be used to modify or drop transaction events.

Bug Fixes

  • Do not crash in Span.Finish() when the Client is empty (#520)
  • Attach non-PII/non-sensitive request headers to events when ClientOptions.SendDefaultPii is set to false (#524)

Misc

  • Clarify how to handle logrus.Fatalf events (#501)
  • Rename the examples directory to _examples (#521)
    • This removes an indirect dependency to github.com/golang-jwt/jwt

v0.16.0

1 year ago

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.16.0. Due to ongoing work towards a stable API for v1.0.0, we sadly had to include two breaking changes in this release.

Breaking Changes

  • Add EnableTracing, a boolean option flag to enable performance monitoring (false by default).
    • If you're using TracesSampleRate or TracesSampler, this option is required to enable performance monitoring.

      sentry.Init(sentry.ClientOptions{
          EnableTracing: true,
          TracesSampleRate: 1.0,
      })
      
  • Unify TracesSampler #498
    • TracesSampler was changed to a callback that must return a float64 between 0.0 and 1.0.

      For example, you can apply a sample rate of 1.0 (100%) to all /api transactions, and a sample rate of 0.5 (50%) to all other transactions. You can read more about this in our SDK docs.

      sentry.Init(sentry.ClientOptions{
          TracesSampler: sentry.TracesSampler(func(ctx sentry.SamplingContext) float64 {
               hub := sentry.GetHubFromContext(ctx.Span.Context())
               name := hub.Scope().Transaction()
      
               if strings.HasPrefix(name, "GET /api") {
                   return 1.0
               }
      
               return 0.5
           }),
       }
      

Features

  • Send errors logged with Logrus to Sentry.
  • Add support for Dynamic Sampling #491
    • You can read more about Dynamic Sampling in our product docs.
  • Add detailed logging about the reason transactions are being dropped.
    • You can enable SDK logging via sentry.ClientOptions.Debug: true.

Bug Fixes

  • Do not clone the hub when calling StartTransaction #505

v0.15.0

1 year ago
  • fix: Scope values should not override Event values (#446)
  • feat: Make maximum amount of spans configurable (#460)
  • feat: Add a method to start a transaction (#482)
  • feat: Extend User interface by adding Data, Name and Segment (#483)
  • feat: Add ClientOptions.SendDefaultPII (#485)

v0.14.0

1 year ago
  • feat: Add function to continue from trace string (#434)
  • feat: Add max-depth options (#428)
  • [breaking] ref: Use a Context type mapping to a map[string]interface{} for all event contexts (#444)
  • [breaking] ref: Replace deprecated ioutil pkg with os & io (#454)
  • ref: Optimize stacktrace.go from size and speed (#467)
  • ci: Test against go1.19 and go1.18, drop go1.16 and go1.15 support (#432, #477)
  • deps: Dependency update to fix CVEs (#462, #464, #477)

NOTE: This version drops support for Go 1.16 and Go 1.15. The currently supported Go versions are the last 3 stable releases: 1.19, 1.18 and 1.17.

v0.13.0

2 years ago
  • ref: Change DSN ProjectID to be a string (#420)
  • fix: When extracting PCs from stack frames, try the PC field (#393)
  • build: Bump gin-gonic/gin from v1.4.0 to v1.7.7 (#412)
  • build: Bump Go version in go.mod (#410)
  • ci: Bump golangci-lint version in GH workflow (#419)
  • ci: Update GraphQL config with appropriate permissions (#417)
  • ci: Add craft release automation (#422)

v0.12.0

2 years ago
  • feat: Automatic Release detection (#363, #369, #386, #400)
  • fix: Do not change Hub.lastEventID for transactions (#379)
  • fix: Do not clear LastEventID when events are dropped (#382)
  • Updates to documentation (#366, #385)

NOTE: This version drops support for Go 1.14, however no changes have been made that would make the SDK not work with Go 1.14. The currently supported Go versions are the last 3 stable releases: 1.15, 1.16 and 1.17. There are two behavior changes related to LastEventID, both of which were intended to align the behavior of the Sentry Go SDK with other Sentry SDKs. The new automatic release detection feature makes it easier to use Sentry and separate events per release without requiring extra work from users. We intend to improve this functionality in a future release by utilizing information that will be available in runtime starting with Go 1.18. The tracking issue is #401.

v0.11.0

3 years ago
  • feat(transports): Category-based Rate Limiting (#354)
  • feat(transports): Report User-Agent identifying SDK (#357)
  • fix(scope): Include event processors in clone (#349)
  • Improvements to go doc documentation (#344, #350, #351)
  • Miscellaneous changes to our testing infrastructure with GitHub Actions (57123a40, #128, #338, #345, #346, #352, #353, #355)

NOTE: This version drops support for Go 1.13. The currently supported Go versions are the last 3 stable releases: 1.14, 1.15 and 1.16. Users of the tracing functionality (StartSpan, etc) should upgrade to this version to benefit from separate rate limits for errors and transactions. There are no breaking changes and upgrading should be a smooth experience for all users.