-
Notifications
You must be signed in to change notification settings - Fork 535
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: go-kit/log-slog adapter fixes #9943
base: arve/upgrade-mimir-prometheus
Are you sure you want to change the base?
fix: go-kit/log-slog adapter fixes #9943
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you fix failing tests?
Signed-off-by: Arve Knudsen <[email protected]>
78797ed
to
d920e20
Compare
…w left-open behaviour in Prometheus 3
…left-open interval behaviour
Signed-off-by: Arve Knudsen <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dimitarvdimitrov this is a PR against my PR :) |
it's all good, I thought we're merging against main here. whew
Changes included: - log/slog always includes timestamps by default; they are now included in the go-kit/log output. We make no attempts to adjust/remove any other timestamp keys (such as the often used `ts` kv pair in go-kit/log implementations). - a new function to handle properly appending/nesting our kv pairs for the logger - proper handling of nested grouping - introduction of a `preformatted` field on the goKitHandler struct to cache previously added kv pairs containing log values. helpful to maintain the ordering of kv pairs added via multiple/nested/chained calls to a logger's `.With()` or `.WithGroup()` methods. - WithGroup() now returns a new handler struct, as opposed to updating itself (as recommended by slog implementation docs). - Update test suite to allow stripping timestamps from logs to prevent non-deterministic output - Update test suite mock setup to validate correct log formatting, now that kv pairs for logs follow the pattern `group1.group2.key=value` Not addressed: - I haven't found a good way to (programmatically) address call depth when getting source caller info. Using a call depth of 6 (see code snippet) seems to properly unwind back to the originating `.Info()` etc method call, but I haven't checked other options. Example output, after shimming the following logging calls into the existing handler test suite: ```go gkadapterLogger := SlogFromGoKit(log.With(log.NewLogfmtLogger(os.Stderr), "caller", log.Caller(6))) gkadapterLogger.Info("go-kit/log adapter output") gkadapterLogger.WithGroup("g1").WithGroup("g2").Info("test1", "hello", "world") gkadapterLogger.WithGroup("g1").With("hello", "world").Info("test2", "hello", "world") gkadapterLogger.WithGroup("g1").With("hello", "world").WithGroup("g2").Info("test3", "hello", "world") gkadapterLogger.With("hello", "world").With("hello", "world").Info("test4", "hello", "world") // Output: // level=info caller=slogadapter_test.go:26 time=2024-11-18T13:09:59.674350655-05:00 msg=test1 g1.g2.hello=world // level=info caller=slogadapter_test.go:27 time=2024-11-18T13:09:59.674376383-05:00 msg=test2 g1.hello=world g1.hello=world // level=info caller=slogadapter_test.go:28 time=2024-11-18T13:09:59.674392598-05:00 msg=test3 g1.hello=world g1.g2.hello=world // level=info caller=slogadapter_test.go:29 time=2024-11-18T13:09:59.674419421-05:00 msg=test4 hello=world hello=world hello=world ``` Signed-off-by: TJ Hoplock <[email protected]>
a26e1a8
to
dc6f3da
Compare
@dimitarvdimitrov I rebased on @aknuds1's PR, the change set is now accurate (and much more reasonably sized 🙃 ) |
i'll leave the reviews to @aknuds1 since he's already involved |
1e5912c
to
e414b00
Compare
d457cc1
to
a4ae1eb
Compare
Changes included:
ts
kv pair in go-kit/log implementations).preformatted
field on the goKitHandler struct to cache previously added kv pairs containing log values. helpful to maintain the ordering of kv pairs added via multiple/nested/chained calls to a logger's.With()
or.WithGroup()
methods.Not addressed:
promslog
pkg..Info()
etc method call, but I haven't checked other options.Example output, after shimming the following logging calls into the existing handler test suite:
What this PR does
Which issue(s) this PR fixes or relates to
Fixes #
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]
.about-versioning.md
updated with experimental features.