-
Notifications
You must be signed in to change notification settings - Fork 403
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
feat(logger): accept arbitrary keyword=value for ephemeral metadata #1658
feat(logger): accept arbitrary keyword=value for ephemeral metadata #1658
Conversation
Waiting for CI to complete to ensure it works in a fresh Python env, then will refresh Docs. |
Need to add co-authorship for Noah before merging (@OGoodness). I'll work on docs now as we've finished peer review due to the complexity of this change. |
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.
Amazing work @heitorlessa! Thanks for sharing the ideas you had for changing the code this way and make it simple.
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.