Add structured logging with correlation IDs for distributed tracing#9
Merged
Add structured logging with correlation IDs for distributed tracing#9
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Adds structured logging with per-request correlation IDs across all layers, replacing the basic
logging.basicConfig()setup. Every request now carries a unique trace identifier through its entire lifecycle, making it possible to follow a request's path across log lines and downstream services.Changes
New modules:
contextvars-based correlation ID storage withX-Correlation-IDheader propagationCorrelationIdFilter,JSONFormatter, andconfigure_logging()setup helperMiddleware (middleware.py):
X-Correlation-IDfrom incoming requests or generates a new UUIDContextVarfor the duration of the requestTargeted logging added to:
routes/images.py— upload rejections (content-type, size, tags, validation), successful uploads, 404sroutes/retention.py— sweep trigger with batch sizeBug fix:
except Exception:withexcept Exception as e:inProcessImageUseCaseso the exception is captured in log outputVersion
1.2.4→1.3.0(MINOR — new features, no breaking changes)Testing
Diff
15 files changed, 366 insertions, 8 deletions