Usage
Sentry's SDK hooks into your runtime environment and automatically reports errors, uncaught exceptions, and unhandled rejections as well as other types of errors depending on the platform.
Key terms:
- An event is one instance of sending data to Sentry. Generally, this data is an error or exception.
- An issue is a grouping of similar events.
- The reporting of an event is called capturing. When an event is captured, it’s sent to Sentry.
The most common form of capturing is to capture errors. What can be captured as an error varies by platform. In general, if you have something that looks like an exception, it can be captured. For some SDKs, you can also omit the argument to CaptureException
and Sentry will attempt to capture the current exception. It is also useful for manual reporting of errors or messages to Sentry.
While capturing an event, you can also record the breadcrumbs that lead up to that event. Breadcrumbs are different from events: they will not create an event in Sentry, but will be buffered until the next event is sent. Learn more about breadcrumbs in our Breadcrumbs documentation.
Capturing Errors
To capture an event in Go, you can pass any struct implementing an error
interface to CaptureException()
. If you use a 3rd party library instead of native errors
package, we'll do our best to extract a stack trace.
The SDK is fully compatible with (but not limited to):
github.com/pkg/errors
github.com/go-errors/errors
github.com/pingcap/errors
If there is an errors package that's not working out of the box, let us know!
f, err := os.Open("filename.ext")
if err != nil {
sentry.CaptureException(err)
}
Capturing Messages
Another common operation is to capture a bare message. A message is textual information that should be sent to Sentry. Typically messages are not emitted, but they can be useful for some teams.
sentry.CaptureMessage("Something went wrong")
By default, Sentry's Go SDK uses an asynchronous transport. That means that calls to CaptureException
, CaptureEvent
, and CaptureMessage
return without waiting for network operations. Instead, events are buffered and sent over the network in a background goroutine. Call sentry.Flush
to wait for event delivery before the program terminates. You can change the default behavior by using a different transport, for example HTTPSyncTransport
. More details in the Transports
section.
- Package:
- github:getsentry/sentry-go
- Version:
- 0.28.1
- Repository:
- https://github.com/getsentry/sentry-go/