Pure Go, zero C dependencies. Module path github.com/RelayOne/coderadar/sdks/go/coderadar. Goroutine-safe, defer-friendly.
go get github.com/RelayOne/coderadar/sdks/go/coderadar
package main
import (
"context"
"net/http"
"os"
"github.com/RelayOne/coderadar/sdks/go/coderadar"
)
func main() {
client, err := coderadar.NewClient(coderadar.Config{
DSN: os.Getenv("CODERADAR_DSN"),
Project: "relaygate",
Environment: os.Getenv("ENV"),
Release: os.Getenv("RELEASE_SHA"),
SampleRate: 1.0,
TracesSampleRate: 0.2,
Debug: false,
BeforeSend: func(ev *coderadar.Event) *coderadar.Event { return ev },
})
if err != nil {
panic(err)
}
defer client.Flush(context.Background())
handler := coderadar.WrapHandler(yourMux, client)
http.ListenAndServe(":8080", handler)
}
import (
"github.com/go-chi/chi/v5"
chimid "github.com/RelayOne/coderadar/sdks/go/coderadar/chimid"
)
r := chi.NewRouter()
r.Use(chimid.Middleware(client))
import (
"github.com/gin-gonic/gin"
crgin "github.com/RelayOne/coderadar/sdks/go/coderadar/gin"
)
r := gin.Default()
r.Use(crgin.Middleware(client))
import (
crecho "github.com/RelayOne/coderadar/sdks/go/coderadar/echo"
)
e := echo.New()
e.Use(crecho.Middleware(client))
// from anywhere
client.CaptureException(err, &coderadar.EventOpts{
Tags: map[string]string{"region": "us-central1"},
})
client.CaptureMessage("background job complete", coderadar.LevelInfo)
// scoped tags / user (via context)
ctx = coderadar.WithUser(ctx, &coderadar.User{ID: u.ID})
ctx = coderadar.WithTag(ctx, "tenant", "acme")
// recover from panics manually
defer func() {
if r := recover(); r != nil {
client.CaptureException(fmt.Errorf("panic: %v", r), nil)
panic(r) // re-throw if you want
}
}()
// drop-in OTLP traces exporter that ships to coderadar's /v1/traces
import "github.com/RelayOne/coderadar/sdks/go/coderadar/otel"
exporter := otel.NewTraceExporter(client)
tp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter))
otel.SetTracerProvider(tp)
client.Flush(ctx) on shutdown — typically inside signal.NotifyContext teardown.tracing package interop: see .../coderadar/otelbridge.