Originally published at runheed.com .
Error trackers group repeats of a bug by a fingerprint, usually built from the error type, the message and where it was thrown. If the message holds a value that changes each time, like a user ID, an email, a timestamp or a duration, every occurrence gets a new fingerprint. You get a new-error alert per user and a list nobody can read. If the fingerprint includes the line number, an edit higher up the file makes every error below it look new. Replace the changing values before hashing, and leave the line number out.
What splits one bug into many
Message What changes each time
User 8124 not found The ID
Request to payments.example timed out after 10032ms The duration
connect ECONNREFUSED 10.0.0.4:5432 The address and port
No account for [email protected] The email
Order 6f1c2a9e-4b7d-4e2a-9c51-3d8e0b7a1f42 failed The UUID
Expired at 2026-11-07T04:00:12.123Z The timestamp
Build output does it too.…