From 2e92c62938cfc986c9310ac7c29c3371de3bdb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emir=20Ribi=C4=87?= Date: Sun, 26 Jan 2025 20:07:04 +0100 Subject: [PATCH] handle sentry.Request properly in sentrylogrus (#957) --- logrus/logrusentry.go | 11 +++++++++-- logrus/logrusentry_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/logrus/logrusentry.go b/logrus/logrusentry.go index e6739950b..1ac9da443 100644 --- a/logrus/logrusentry.go +++ b/logrus/logrusentry.go @@ -172,9 +172,16 @@ func (h *Hook) entryToEvent(l *logrus.Entry) *sentry.Event { } key := h.key(FieldRequest) - if req, ok := s.Extra[key].(*http.Request); ok { + switch request := s.Extra[key].(type) { + case *http.Request: delete(s.Extra, key) - s.Request = sentry.NewRequest(req) + s.Request = sentry.NewRequest(request) + case sentry.Request: + delete(s.Extra, key) + s.Request = &request + case *sentry.Request: + delete(s.Extra, key) + s.Request = request } if err, ok := s.Extra[logrus.ErrorKey].(error); ok { diff --git a/logrus/logrusentry_test.go b/logrus/logrusentry_test.go index d44af1bc2..472950e1d 100644 --- a/logrus/logrusentry_test.go +++ b/logrus/logrusentry_test.go @@ -166,6 +166,44 @@ func Test_entryToEvent(t *testing.T) { Logger: "logrus", }, }, + "sentry request": { + entry: &logrus.Entry{ + Data: map[string]any{ + FieldRequest: sentry.Request{ + URL: "http://example.com/", + Method: http.MethodGet, + }, + }, + }, + want: &sentry.Event{ + Level: "fatal", + Extra: map[string]any{}, + Request: &sentry.Request{ + URL: "http://example.com/", + Method: http.MethodGet, + }, + Logger: "logrus", + }, + }, + "sentry pointer to request": { + entry: &logrus.Entry{ + Data: map[string]any{ + FieldRequest: &sentry.Request{ + URL: "http://example.com/", + Method: http.MethodGet, + }, + }, + }, + want: &sentry.Event{ + Level: "fatal", + Extra: map[string]any{}, + Request: &sentry.Request{ + URL: "http://example.com/", + Method: http.MethodGet, + }, + Logger: "logrus", + }, + }, "error": { entry: &logrus.Entry{ Data: map[string]any{