sentry-go

Official Sentry SDK for Go

Github stars Tracking Chart

Official Sentry SDK for Go

Build Status
Go Report Card
Discord
GoDoc
go.dev

sentry-go provides a Sentry client implementation for the Go programming language. This is the next line of the Go SDK for Sentry, intended to replace the raven-go package.

Looking for the old raven-go SDK documentation? See the Legacy client section here.
If you want to start using sentry-go instead, check out the migration guide.

Requirements

We verify this package against N-2 recent versions of Go compiler. As of September 2019, those versions are:

  • 1.11
  • 1.12
  • 1.13

Installation

sentry-go can be installed like any other Go library through go get:

$ go get github.com/getsentry/sentry-go

Or, if you are already using Go Modules, specify a version number as well:

$ go get github.com/getsentry/sentry-go@v0.3.0

Configuration

To use sentry-go, you’ll need to import the sentry-go package and initialize it with the client options that will include your DSN. If you specify the SENTRY_DSN environment variable, you can omit this value from options and it will be picked up automatically for you. The release and environment can also be specified in the environment variables SENTRY_RELEASE and SENTRY_ENVIRONMENT respectively.

More on this in Configuration section.

Usage

By default, Sentry Go SDK uses asynchronous transport, which in the code example below requires an explicit awaiting for event delivery to be finished using sentry.Flush method. It is necessary, because otherwise the program would not wait for the async HTTP calls to return a response, and exit the process immediately when it reached the end of the main function. It would not be required inside a running goroutine or if you would use HTTPSyncTransport, which you can read about in Transports section.

package main

import (
    "fmt"
    "os"
    "time"

    "github.com/getsentry/sentry-go"
)

func main() {
  err := sentry.Init(sentry.ClientOptions{
    Dsn: "___DSN___",
  })

  if err != nil {
    fmt.Printf("Sentry initialization failed: %v\n", err)
  }
  
  f, err := os.Open("filename.ext")
  if err != nil {
    sentry.CaptureException(err)
    sentry.Flush(time.Second * 5)
  }
}

For more detailed information about how to get the most out of sentry-go there is additional documentation available:

Resources:

License

Licensed under the BSD license, see LICENSE

Community

Join Sentry's #go channel on Discord to get involved and help us improve the SDK!

Overview

Name With Ownergetsentry/sentry-go
Primary LanguageGo
Program languageGo (Language Count: 3)
Platform
License:MIT License
Release Count51
Last Release Namev0.27.0 (Posted on )
First Release Namev0.0.1-beta (Posted on 2019-05-23 13:54:46)
Created At2019-03-08 11:02:24
Pushed At2024-05-05 09:11:51
Last Commit At2024-04-30 12:02:44
Stargazers Count864
Watchers Count47
Fork Count202
Commits Count689
Has Issues Enabled
Issues Count339
Issue Open Count69
Pull Requests Count382
Pull Requests Open Count8
Pull Requests Close Count76
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top