Skip to content

Commit f0e5daa

Browse files
committed
filter vendor folder from stacktrace frames
1 parent 415e4a7 commit f0e5daa

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

observance/logging.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package observance
33
import (
44
"io"
55
"os"
6+
"strings"
67
"time"
78

89
"github.com/getsentry/sentry-go"
@@ -124,6 +125,9 @@ func NewLogrus(logLevel string, appName string, sentryURL string, version string
124125
Dsn: sentryURL,
125126
AttachStacktrace: true,
126127
BeforeSend: func(event *sentry.Event, hint *sentry.EventHint) *sentry.Event {
128+
for i := range event.Exception {
129+
event.Exception[i].Stacktrace.Frames = filterVendorFrames(event.Exception[i].Stacktrace.Frames)
130+
}
127131
// Remove the list of all packages of the service. It just spams Sentry.
128132
event.Modules = make(map[string]string)
129133
return event
@@ -153,3 +157,18 @@ func NewLogrus(logLevel string, appName string, sentryURL string, version string
153157
logger: logger,
154158
}, nil
155159
}
160+
161+
// filterVendorFrames removes frames that belong to the vendor folder from the stack trace.
162+
// That way, the Sentry GUI only shows the responsible line in the actual application code.
163+
// Our Sentry instance runs an older version of Sentry that does not yet provide the option
164+
// to enter stack trace filters in the settings.
165+
func filterVendorFrames(frames []sentry.Frame) []sentry.Frame {
166+
filteredFrames := make([]sentry.Frame, 0, len(frames))
167+
for _, frame := range frames {
168+
if strings.Contains(frame.AbsPath, "vendor") {
169+
continue
170+
}
171+
filteredFrames = append(filteredFrames, frame)
172+
}
173+
return filteredFrames
174+
}

0 commit comments

Comments
 (0)