Skip to content

Instantly share code, notes, and snippets.

@ptman
Created April 1, 2020 08:15
Show Gist options
  • Save ptman/0ca3c05ab423efc2e03c2efa82d2ce41 to your computer and use it in GitHub Desktop.
Save ptman/0ca3c05ab423efc2e03c2efa82d2ce41 to your computer and use it in GitHub Desktop.
revel sentry filter
// Copyright (c) 2020 Paul Tötterman <paul.totterman@iki.fi>.
import sentry "github.com/getsentry/sentry-go"
// look at github.com/getsentry/sentry-go/http
var SentryFilter = func(c *revel.Controller, fc []revel.Filter) {
if dsn := revel.Config.StringDefault("sentry.dsn", ""); dsn != "" {
defer func() {
if err := recover(); err != nil {
hub := sentry.CurrentHub().Clone()
req, ok := c.Request.In.GetRaw().(*http.Request)
if ok {
hub.Scope().SetRequest(sentry.Request{}.FromHTTPRequest(req))
}
hub.Recover(err)
panic(err)
}
}()
}
fc[0](c, fc[1:])
}
func init() { // not really init, since revel.Config needs to be usable
if dsn := revel.Config.StringDefault("sentry.dsn", ""); dsn != "" {
if err := sentry.Init(sentry.ClientOptions{
Dsn: dsn,
//Environment: "",
Release: "appname@" + app.AppVersion,
}); err != nil {
revel.AppLog.Error("Sentry error", "err", err)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment