fix(logging): use structured key/value form at misused call sites#729
Merged
Conversation
~18 call sites passed printf-style format strings (%s/%v/%d) with trailing positional args to internal/logger's Debug/Info/Warn/Error/Fatal, which forward to zap's sugared key/value API (Warnw/Errorw/...). The verbs were never expanded and the trailing args were misread as key/value pairs; an odd arg count left a dangling key, so zap emitted an extra error-level "Ignored key without a value." line. Convert each site to structured key/value form (following #722/#724), and enable the loggercheck linter (no-printf-like + wrapper rules) so the whole class cannot regress. no docs ticket: internal-only fix Closes #723 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
edenreich
commented
Jul 2, 2026
Co-authored-by: Eden Reich <eden.reich@gmail.com>
Removed exclusion for staticcheck SA5011 in tests.
inference-gateway-releaser Bot
added a commit
that referenced
this pull request
Jul 3, 2026
## [0.128.0](v0.127.0...v0.128.0) (2026-07-03) ### 🚀 Features * **chat:** make status indicators selectable with /tools and /a2a views ([#732](#732)) ([6882de0](6882de0)), closes [#717](#717) [#717](#717) ### 🐛 Bug Fixes * **agent:** drop redundant Idle transition that errored on every run ([#726](#726)) ([469ec64](469ec64)), closes [#722](#722) [#725](#725) * **agent:** report session-cumulative total_turns in completion logs ([#728](#728)) ([0d8fb08](0d8fb08)), closes [#727](#727) * **a2a:** route active A2A reads and HasPending through the job supervisor ([#693](#693)) ([#721](#721)) ([dcd0670](dcd0670)), closes [#718](#718) [#719](#719) [#720](#720) * **keybindings:** stop "unknown keybinding action" log flood ([#724](#724)) ([c828426](c828426)), closes [#714](#714) [#722](#722) * **a2a:** unify background-job liveness, clear, and cancel on the supervisor contract ([#730](#730)) ([eb37fd0](eb37fd0)), closes [#693](#693) [#720](#720) [#718](#718) [#719](#719) * **logging:** use structured key/value form at misused call sites ([#729](#729)) ([cd96028](cd96028)), closes [#722](#722) [#724](#724) [#724](#724) [#723](#723) * **tools:** wait for pipe readers before reaping detached bash shells ([#716](#716)) ([e1d0d84](e1d0d84)), closes [#696](#696) ### ⚡ Performance Improvements * **tui:** cache per-entry rendering and keep the Update loop responsive ([#731](#731)) ([8c9db0d](8c9db0d)) ### 📚 Documentation * **a2a:** add SKILL.md documentation for Agent2Agent protocol ([defcd57](defcd57)) ### 🔧 Build System * **deps:** bump golang.org/x/net from 0.47.0 to 0.55.0 in /examples/mcp/mcp-server ([#715](#715)) ([990803b](990803b)) ### 🧹 Maintenance * **flox:** bump dev deps ([d0c8f6b](d0c8f6b))
Contributor
|
🎉 This PR is included in version 0.128.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
internal/logger'sDebug/Info/Warn/Error/Fatal(msg string, args ...any)forward to zap's sugaredkey/value API (
Warnw/Errorw/…). ~18 call sites instead passed a printf-style format string(
%s/%v/%d) with trailing positional args, so:%slanded in the log), andemit an extra
error-levelIgnored key without a value.line.This is the same defect class as the keybinding log flood (#722, fixed in #724, which corrected the two
worst offenders and tracked the rest in #723). This PR closes the remaining sites.
Changes
(
logger.Warn("failed to …", "error", err)). Multi-word keys use the repo's snake_case house style(
chat_id,original_bytes).internal/ui/keybinding/actions.go(7),internal/agent/agent_utils.go(5),internal/services/channels/telegram.go(4),internal/app/chat.go(1),internal/container/container.go(1)loggerchecklinter (no-printf-like+ wrapper rules forinternal/logger.*) sothis class cannot regress.
The 9 other logger calls that contain a
%were verified as correctfmt.Sprintfusage (messagepre-formatted, or building a properly-keyed value) and left untouched.
Verification
task build,task test(full suite), andtask lint(0 issues, loggercheck active) all pass.(
odd number of arguments passed as key-value pairs for logging); the fixed tree lints clean.no docs ticket: internal-only fix
Closes #723