feat(logger): accept arbitrary keyword=value for ephemeral metadata #1658
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.
Issue number: #1167
Summary
This PR backports the necessary code implemented in CPython 3.8, monkeypatch and adds additional guards to only use the backported code in older Python versions to not impact performance and future improvements.
Changes
This change allows customers to pass arbitrary and ephemeral keyword=value arguments in log statements.
It addresses one of the oldest issues and makes it a better UX than
extra
argument. Both can coexist. This is a backport feature from Python 3.8.Why did it take us so long?
The reason that this took us so long was that we inject the
location
key in log, so customers know where a logging statement came from in their code.When using a class like
Logger
, we need to override all log statement methods. When doing so, it moves the stack frame location, where thelocation
key now points to where the statement was called insideLogger
, instead of the customer log statement location.With this change, the
location
continues to be precise as we move the stack frame location.User experience
BEFORE
AFTER
Checklist
If your change doesn't seem to apply, please leave them unchecked.
Is this a breaking change?
RFC issue number:
Checklist:
Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.