-
Notifications
You must be signed in to change notification settings - Fork 949
docs: warn about dictConfig clearing OTel handlers in logs example #5420
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
Closed
avinab-neogy
wants to merge
2
commits into
open-telemetry:main
from
avinab-neogy:docs/add-dictconfig-warning-logging
+23
−0
Closed
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| docs: warn about `dictConfig` clearing OTel handlers in logs example |
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
Oops, something went wrong.
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.
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.
This is incorrect, the opposite is true. We explicitly preserve the handler by removing it before
logging.config.dictConfigandlogging.config.fileConfigare called, and then re-adding it back after, seehttps://github.com/open-telemetry/opentelemetry-python-contrib/blob/79f9e575e96199ece9ee79d79e25adaf8cbc52f2/instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/handler.py#L42-L79
https://github.com/open-telemetry/opentelemetry-python-contrib/blob/79f9e575e96199ece9ee79d79e25adaf8cbc52f2/instrumentation/opentelemetry-instrumentation-logging/tests/test_handler.py#L675-L717
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.
@DylanRussell @herin049 Thanks for pointing that out, you're both totally right!
To answer your question @herin049, I went back into my local setup and my original test was just running standard Python's
dictConfigfunction with a vanillaStreamHandler, completely bypassing the OTel instrumentation.I tested it again using the OpenTelemetry library, and I could see how it automatically saves and restores the handler.
That said, I originally opened this to address Point 3 from Issue #4738 :
This issue explicitly asked for this warning to be added to the docs. I'm guessing that requirement came from someone configuring the
LoggingHandlermanually via the core SDK, where this monkey-patch doesn't exist?How would you prefer to handle this? I'm happy to do either of the following:
LoggingHandlermanually via the core SDK, sincedictConfigwill still clear their handlers without the instrumentation package.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.
I think we should just close this PR, I don't see any behavior here that needs to be documented.
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.
Sounds good! Closing this PR out. Thanks for the review and for clearing this up!