Sentry integration
This commit is contained in:
@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"forge.cadoles.com/wpetit/hydra-passwordless/internal/route"
|
||||
"github.com/getsentry/sentry-go"
|
||||
"github.com/go-chi/chi"
|
||||
"github.com/go-chi/chi/middleware"
|
||||
"gitlab.com/wpetit/goweb/middleware/container"
|
||||
@ -15,6 +16,7 @@ import (
|
||||
"os"
|
||||
|
||||
"forge.cadoles.com/wpetit/hydra-passwordless/internal/config"
|
||||
sentryhttp "github.com/getsentry/sentry-go/http"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
@ -89,6 +91,30 @@ func main() {
|
||||
log.Fatalf("%+v", errors.Wrap(err, "could not override config with environment"))
|
||||
}
|
||||
|
||||
useSentry := conf.Sentry.DSN != ""
|
||||
|
||||
if useSentry {
|
||||
var sentryEnv string
|
||||
if conf.Sentry.Environment == "" {
|
||||
sentryEnv, _ = os.Hostname()
|
||||
} else {
|
||||
sentryEnv = conf.Sentry.Environment
|
||||
}
|
||||
|
||||
err := sentry.Init(sentry.ClientOptions{
|
||||
Dsn: conf.Sentry.DSN,
|
||||
Debug: conf.Debug,
|
||||
SampleRate: conf.Sentry.ServerSampleRate,
|
||||
Release: ProjectVersion + "-" + GitRef,
|
||||
Environment: sentryEnv,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("%+v", errors.Wrap(err, "could not initialize sentry"))
|
||||
}
|
||||
|
||||
defer sentry.Flush(conf.Sentry.ServerFlushTimeout)
|
||||
}
|
||||
|
||||
// Create service container
|
||||
ctn, err := getServiceContainer(conf)
|
||||
if err != nil {
|
||||
@ -101,6 +127,14 @@ func main() {
|
||||
r.Use(middleware.Logger)
|
||||
r.Use(middleware.Recoverer)
|
||||
|
||||
if useSentry {
|
||||
sentryMiddleware := sentryhttp.New(sentryhttp.Options{
|
||||
Repanic: true,
|
||||
})
|
||||
|
||||
r.Use(sentryMiddleware.Handle)
|
||||
}
|
||||
|
||||
// Expose service container on router
|
||||
r.Use(container.ServiceContainer(ctn))
|
||||
|
||||
|
Reference in New Issue
Block a user