Attach stack traces to their log line, and fix levels I got wrong

ChoreSecurityService
Shipped
August 23, 2026 at 7:02 AM UTC
Author
Kamo
Commit
5924af3

printStackTrace() writes to stderr directly, so 186 of them survived the println sweep untouched — still unconditional, still unattributed, and now detached from the log line that described them. 166 merge into the adjacent log call as its throwable argument (log.error(msg, e)), which is where a stack trace belongs; 16 with nothing adjacent become log.error with a message; three files that had no logger got one. The level heuristic in the sweep classified by keyword, and keywords lie: - DnsVerificationService logged 'TRY_AGAIN ... transient DNS failure' at error because it contains 'failure'. The comment directly above it says 'this is a wait-state for the 60s poll loop, not a hard error'. Same for 'DNS lookup failed', which is the normal state of a record the customer has not created yet — and the watcher re-checks unresolvable domains every 60 seconds, so it was the only recurring error in the pod. - UserAuthenticationService announced NOT FOUND outcomes at error. A wrong username is what a failed login looks like, not a system fault, and the login endpoint gets bot traffic. - Two MemberController lines that say WARNING logged at error. Those are now debug or warn. SubdomainBranchesController's DNS retry error is left alone — it predates this work and is a real failure.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing