sentryfiber

package module
v0.47.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2026 License: MIT Imports: 10 Imported by: 0

README


Official Sentry Fiber v3 Handler for Sentry-go SDK

Godoc: https://godoc.org/github.com/getsentry/sentry-go/fiberv3

Installation

go get github.com/getsentry/sentry-go/fiberv3
import (
	"fmt"
	fiber "github.com/gofiber/fiber/v3"
	"github.com/getsentry/sentry-go"
	sentryfiber "github.com/getsentry/sentry-go/fiberv3"
)

To initialize Sentry's handler, you need to initialize Sentry itself beforehand.

if err := sentry.Init(sentry.ClientOptions{
	Dsn: "your-public-dsn",
}); err != nil {
	fmt.Printf("Sentry initialization failed: %v\n", err)
}

sentryHandler := sentryfiber.New(sentryfiber.Options{})

app := fiber.New()
app.Use(sentryHandler)
app.Listen(":3000")

Configuration

sentryfiber accepts a struct of Options that allows you to configure how the handler will behave.

// Repanic configures whether Sentry should repanic after recovery, in most cases it should be set to false,
// as fasthttp doesn't include its own Recovery handler.
Repanic bool
// WaitForDelivery configures whether you want to block the request before moving forward with the response.
// Because fasthttp doesn't include its own `Recovery` handler, it will restart the application,
// and event won't be delivered otherwise.
WaitForDelivery bool
// Timeout for the event delivery requests.
Timeout time.Duration

Usage

sentryfiber attaches an instance of *sentry.Hub to the request context, which makes it available throughout the rest of the request's lifetime. You can access it by using sentryfiber.GetHubFromContext() in any subsequent middleware and routes.

Keep in mind that *sentry.Hub won't be available in middleware attached before sentryfiber.

sentryHandler := sentryfiber.New(sentryfiber.Options{
	Repanic:         true,
	WaitForDelivery: true,
})

enhanceSentryEvent := func(ctx fiber.Ctx) error {
	if hub := sentryfiber.GetHubFromContext(ctx); hub != nil {
		hub.Scope().SetTag("someRandomTag", "maybeYouNeedIt")
	}
	return ctx.Next()
}

app := fiber.New()
app.Use(sentryHandler)

app.All("/foo", enhanceSentryEvent, func(ctx fiber.Ctx) error {
	panic("y tho")
})

app.All("/", func(ctx fiber.Ctx) error {
	if hub := sentryfiber.GetHubFromContext(ctx); hub != nil {
		hub.WithScope(func(scope *sentry.Scope) {
			scope.SetTag("unwantedQuery", "someQueryDataMaybe")
			hub.CaptureMessage("User provided unwanted query string, but we recovered just fine")
		})
	}
	return ctx.SendStatus(fiber.StatusOK)
})

app.Listen(":3000")
Accessing Context in BeforeSend callback
sentry.Init(sentry.ClientOptions{
	Dsn: "your-public-dsn",
	BeforeSend: func(event *sentry.Event, hint *sentry.EventHint) *sentry.Event {
		if hint.Context != nil {
			if ctx, ok := hint.Context.Value(sentry.RequestContextKey).(fiber.Ctx); ok {
				fmt.Println(ctx.Hostname())
			}
		}
		return event
	},
})

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetHubFromContext

func GetHubFromContext(ctx fiber.Ctx) *sentry.Hub

GetHubFromContext retrieves the Hub instance from the fiber.Ctx.

func GetSpanFromContext

func GetSpanFromContext(ctx fiber.Ctx) *sentry.Span

GetSpanFromContext retrieves the Span instance from the fiber.Ctx.

func New

func New(options Options) fiber.Handler

New returns a handler struct which satisfies Fiber's middleware interface.

func SetHubOnContext

func SetHubOnContext(ctx fiber.Ctx, hub *sentry.Hub)

SetHubOnContext sets the Hub instance on the fiber.Ctx.

Types

type Options

type Options struct {
	// Repanic configures whether Sentry should repanic after recovery, in most cases it should be set to false,
	// as fasthttp doesn't include its own Recovery handler.
	Repanic bool
	// WaitForDelivery configures whether you want to block the request before moving forward with the response.
	// Because fasthttp doesn't include its own Recovery handler, it will restart the application,
	// and event won't be delivered otherwise.
	WaitForDelivery bool
	// Timeout for the event delivery requests.
	Timeout time.Duration
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL