Go SDK
Installation
go get github.com/getsentry/sentry-go
Setup
package main
import (
"log"
"time"
"github.com/getsentry/sentry-go"
)
func main() {
err := sentry.Init(sentry.ClientOptions{
Dsn: "https://your-key@your-hostname.tindra.sh/1",
Environment: "production",
Release: "1.4.2",
TracesSampleRate: 0.1,
})
if err != nil {
log.Fatalf("sentry.Init: %v", err)
}
defer sentry.Flush(2 * time.Second)
}
Call sentry.Flush before your process exits to ensure buffered events are sent.
HTTP middleware
net/http
import "github.com/getsentry/sentry-go/http"
sentryHandler := sentryhttp.New(sentryhttp.Options{
Repanic: true,
})
http.Handle("/", sentryHandler.Handle(myHandler))
Gin
import sentrygingo "github.com/getsentry/sentry-go/gin"
router := gin.New()
router.Use(sentrygingo.New(sentrygingo.Options{
Repanic: true,
}))
Echo
import sentryecho "github.com/getsentry/sentry-go/echo"
e := echo.New()
e.Use(sentryecho.New(sentryecho.Options{}))
Manual error capturing
if err != nil {
sentry.CaptureException(err)
}
Capture a message
sentry.CaptureMessage("User exceeded quota")
User context
sentry.ConfigureScope(func(scope *sentry.Scope) {
scope.SetUser(sentry.User{
ID: userID,
Email: userEmail,
})
})
Custom spans
ctx := context.Background()
span := sentry.StartSpan(ctx, "db.query", sentry.WithDescription("Fetch user orders"))
defer span.Finish()
rows, err := db.QueryContext(span.Context(), "SELECT * FROM orders WHERE user_id = $1", userID)
Testing
sentry.CaptureException(fmt.Errorf("hello tindra"))
sentry.Flush(2 * time.Second)
Check your dashboard. The event should appear within a few seconds.