Preventing issues from merging across level

My team has been “using” Sentry for a while, but only in that we’ve been sending lots of events to it and basically ignoring it otherwise. I’m trying to get us into shape. (We use the hosted Sentry service.)

My first goal is to stop our systems from sending any ignorable events at level “error”. Some of this involves fixing bugs that the “errors” are teaching me about. In other cases, lowering the level of a given event from “error” to “warning” makes sense.

My workflow has been to work through the search is:unresolved level:error and fix each issue in turn. When I fix the issue by preventing the event from happening entirely, I can click “resolve” on the issue. But the problem is that when I fix the issue by changing the event’s level to ‘warning’ (which I’d still like to track in Sentry so that a later pass of this project can help us be aware of surprising warnings), the new warning events still get merged into the same issue as the existing error event. So I can click “resolve” on the issue but it will get marked as a regression instants later.

So one version of my question is “how do I stop issues of different levels from being merged?” But I’d welcome advice on better workflows for achieving a “stop my projects from being so spammy” project too!

You’d have to inject something to change the fingerprint of all events. We effectively treat the level as just a tag, and we dont re-hash issues if that tag changes.

The way you’d do this depends on the SDK, but you’d need to hook “all outgoing events” and set (pseodocode):

payload.fingerprint = [...(payload.fingerprint || ['{{ default}}']), payload.level]

https://docs.sentry.io/learn/rollups/#customize-grouping-with-fingerprints