From f4870cbb4c44e54b9b9f8317c98cf5d4667593f7 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Mon, 11 Mar 2024 20:41:45 +0100 Subject: [PATCH] sentry --- go.mod | 1 + go.sum | 8 ++++++++ internal/server/server.go | 14 +++++++++++--- main.go | 8 ++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 496890b..527a7cf 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.22.0 require ( github.com/a-h/templ v0.2.543 + github.com/getsentry/sentry-go v0.27.0 github.com/joho/godotenv v1.5.1 github.com/labstack/echo/v4 v4.11.4 github.com/labstack/gommon v0.4.2 diff --git a/go.sum b/go.sum index 8a3cbf4..78577b7 100644 --- a/go.sum +++ b/go.sum @@ -3,6 +3,10 @@ github.com/a-h/templ v0.2.543/go.mod h1:jP908DQCwI08IrnTalhzSEH9WJqG/Q94+EODQcJG github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -30,6 +34,10 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rjNemo/underscore v0.6.1 h1:9IK9TWIDToFFWwoYZpD8cEKgmJ2N73bP/UIZJYEY+wU= diff --git a/internal/server/server.go b/internal/server/server.go index 14b6913..1ba4a2d 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -12,6 +12,8 @@ import ( "time" "github.com/a-h/templ" + "github.com/getsentry/sentry-go" + sentryecho "github.com/getsentry/sentry-go/echo" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" @@ -99,10 +101,12 @@ func NewRouter(fs embed.FS) *echo.Echo { // config e.HideBanner = true e.Debug = strings.ToLower(os.Getenv("DEBUG")) == "true" - e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{ - Format: "${time_rfc3339} [${method}: ${status}] ${uri}; ip=${remote_ip}; ${latency_human}; ${user_agent}\n", - })) e.HTTPErrorHandler = func(err error, c echo.Context) { + if hub := sentryecho.GetHubFromContext(c); hub != nil { + hub.WithScope(func(s *sentry.Scope) { + hub.CaptureMessage(err.Error()) + }) + } code := http.StatusInternalServerError var he *echo.HTTPError if errors.As(err, &he) { @@ -114,9 +118,13 @@ func NewRouter(fs embed.FS) *echo.Echo { } } // middlewares + e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{ + Format: "${time_rfc3339} [${method}: ${status}] ${uri}; ip=${remote_ip}; ${latency_human}; ${user_agent}\n", + })) e.Use(middleware.Recover()) e.Use(middleware.Secure()) e.Use(middleware.Gzip()) + e.Use(sentryecho.New(sentryecho.Options{})) // static assets e.StaticFS("/static", echo.MustSubFS(fs, "assets")) diff --git a/main.go b/main.go index dff5e05..955a17f 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "os" "strconv" + "github.com/getsentry/sentry-go" "github.com/joho/godotenv" "gorm.io/driver/postgres" "gorm.io/gorm" @@ -29,6 +30,13 @@ func init() { } func main() { + if err := sentry.Init(sentry.ClientOptions{ + Dsn: os.Getenv("SENTRY_DSN"), + TracesSampleRate: 1.0, + }); err != nil { + log.Fatalf("error initializing sentry: %s", err) + } + db, err := gorm.Open(postgres.Open(os.Getenv("DATABASE_URL")), &gorm.Config{}) if err != nil { log.Fatalf("error connecting to the database %s\n", err)