Documentation ¶
Overview ¶
Package sentryhttp provides Sentry integration for servers based on the net/http package.
Example ¶
For a longer and executable example, see https://github.com/getsentry/sentry-go/tree/master/_examples/http.
// Initialize the Sentry SDK once in the main function. // sentry.Init(...) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Use GetHubFromContext to get a hub associated with the current // request. Hubs provide data isolation, such that tags, breadcrumbs // and other attributes are never mixed up across requests. hub := sentry.GetHubFromContext(r.Context()) _, err := http.Get("example.com") if err != nil { hub.CaptureException(err) } }) // Wrap the default mux with Sentry to capture panics and report errors. // // Alternatively, you can also wrap individual handlers if you need to use // different options for different parts of your app. handler := sentryhttp.New(sentryhttp.Options{}).Handle(http.DefaultServeMux) server := http.Server{ Addr: ":0", ReadHeaderTimeout: 3 * time.Second, Handler: handler, } server.ListenAndServe()
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
A Handler is an HTTP middleware factory that provides integration with Sentry.
func New ¶
New returns a new Handler. Use the Handle and HandleFunc methods to wrap existing HTTP handlers.
func (*Handler) Handle ¶
Handle works as a middleware that wraps an existing http.Handler. A wrapped handler will recover from and report panics to Sentry, and provide access to a request-specific hub to report messages and errors.
func (*Handler) HandleFunc ¶
func (h *Handler) HandleFunc(handler http.HandlerFunc) http.HandlerFunc
HandleFunc is like Handle, but with a handler function parameter for cases where that is convenient. In particular, use it to wrap a handler function literal.
http.Handle(pattern, h.HandleFunc(func (w http.ResponseWriter, r *http.Request) { // handler code here }))
type Options ¶
type Options struct { // Repanic configures whether to panic again after recovering from a panic. // Use this option if you have other panic handlers or want the default // behavior from Go's http package, as documented in // https://golang.org/pkg/net/http/#Handler. Repanic bool // WaitForDelivery indicates, in case of a panic, whether to block the // current goroutine and wait until the panic event has been reported to // Sentry before repanicking or resuming normal execution. // // This option is normally not needed. Unless you need different behaviors // for different HTTP handlers, configure the SDK to use the // HTTPSyncTransport instead. // // Waiting (or using HTTPSyncTransport) is useful when the web server runs // in an environment that interrupts execution at the end of a request flow, // like modern serverless platforms. WaitForDelivery bool // Timeout for the delivery of panic events. Defaults to 2s. Only relevant // when WaitForDelivery is true. // // If the timeout is reached, the current goroutine is no longer blocked // waiting, but the delivery is not canceled. Timeout time.Duration }
Options configure a Handler.