Skip to content

Skip missing custom ConsoleWriter parts instead of printing %!s(<nil>) - #776

Open
arpitjain099 wants to merge 1 commit into
rs:masterfrom
arpitjain099:chore/console-skip-missing-part
Open

Skip missing custom ConsoleWriter parts instead of printing %!s(<nil>)#776
arpitjain099 wants to merge 1 commit into
rs:masterfrom
arpitjain099:chore/console-skip-missing-part

Conversation

@arpitjain099

Copy link
Copy Markdown

Fixes #710. When a custom name in PartsOrder (like request_id) isn't present in the event, for instance on the global logger where the field was only set on a request-scoped logger, writePart falls through to consoleDefaultFormatFieldValue and formats the nil value as the literal "%!s()", which then gets written to the line. This returns early for a missing custom part when no custom field-value formatter is configured, so the part is skipped rather than printing garbage.

I added a ConsoleWriter test that logs with a request_id in PartsOrder but absent from the event and asserts the "%!s()" no longer leaks. It fails before the change and passes after, and the full go test ./... suite, go vet, and go fmt are all clean. Thanks for taking a look.

A part name listed in PartsOrder but absent from the event (for example
a request_id logged only on the request-scoped logger, not the global
one) fell through to consoleDefaultFormatFieldValue, which formats a nil
value as the literal "%!s(<nil>)". Return early for a missing custom
part when no custom field-value formatter is set so nothing is written.

Fixes rs#710

Signed-off-by: Arpit Jain <arpitjain099@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Global logger logging context value, even tough a key does not exist in the event map.

1 participant