tanujs108 opened a new pull request, #12850:
URL: https://github.com/apache/apisix/pull/12850
### Description
This PR enhances APISIX's core logging functionality by automatically adding
request context information to all log messages, significantly improving
debugging and operational visibility.
- Add request_id, route_id, and route_name to all log messages
- Implement get_request_context() to extract context from nginx and APISIX
- Implement enhance_log_message() to prepend context to log output
- Use format: [request_id=xxx,route_id=xxx,route_name=xxx] message
- Minimal performance impact with safe extraction using pcall
- Improves debugging and request tracing capabilities
**Problem Solved:**
- Standard APISIX logs provide limited context for request tracing
- Debugging request-specific issues requires manual correlation across
multiple log sources
- Route-specific problems are hard to identify in high-traffic environments
**Changes Made:**
1. **get_request_context()** function extracts:
- `request_id` from `ngx.var.request_id` (nginx-generated unique
identifier)
- `route_id` and `route_name` from `ngx.ctx.api_ctx` (APISIX context)
- Uses `pcall` for safe extraction with graceful fallback
2. **enhance_log_message()** function:
- Automatically prepends context to all log messages
- Only adds context when available (zero overhead when context missing)
#### Which issue(s) this PR fixes:
<!--
*Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
Fixes #
### Checklist
- [ ] I have explained the need for this PR and the problem it solves
- [ ] I have explained the changes or the new features added to this PR
- [ ] I have added tests corresponding to this change
- [ ] I have updated the documentation to reflect this change
- [ ] I have verified that this change is backward compatible (If not,
please discuss on the [APISIX mailing
list](https://github.com/apache/apisix/tree/master#community) first)
<!--
Note
1. Mark the PR as draft until it's ready to be reviewed.
2. Always add/update tests for any changes unless you have a good reason.
3. Always update the documentation to reflect the changes made in the PR.
4. Make a new commit to resolve conversations instead of `push -f`.
5. To resolve merge conflicts, merge master instead of rebasing.
6. Use "request review" to notify the reviewer after making changes.
7. Only a reviewer can mark a conversation as resolved.
-->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]