Skip to content

Conversation

@tanujs108
Copy link

@tanujs108 tanujs108 commented Dec 30, 2025

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:

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 first)

- 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
@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. enhancement New feature or request labels Dec 30, 2025
@tanujs108 tanujs108 marked this pull request as draft December 30, 2025 15:49
@Baoyuantop
Copy link
Contributor

Hi @tanujs108, for this scenario, our preferred solution is to include the request ID in the error log and correlate it with the access log. This provides the full context of the request. In fact, the underlying library already supports this capability, and we are considering adding this feature in future versions of APISIX.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants