Skip to content

feat(api): add high-precision request duration logging middleware (#687) - #747

Open
ravendevhub wants to merge 1 commit into
Core-Foundry:mainfrom
ravendevhub:feat/request-duration-logging-687
Open

feat(api): add high-precision request duration logging middleware (#687)#747
ravendevhub wants to merge 1 commit into
Core-Foundry:mainfrom
ravendevhub:feat/request-duration-logging-687

Conversation

@ravendevhub

Copy link
Copy Markdown

Summary

Resolves #687 by introducing an API request duration logging middleware (listener/src/api/request-duration-logger.ts) that tracks endpoint latency with monotonic high-precision timers (process.hrtime.bigint), records structured access records, and sanitizes query parameters to prevent secret leakage.

Changes

  1. Request Duration Middleware (listener/src/api/request-duration-logger.ts):
    • Accurately measures request lifecycle from entry to completion via res.on('finish').
    • Attaches structured fields: method, path, statusCode, durationMs, requestId, ip.
    • Sanitizes embedded secrets or tokens in URLs before logging.
  2. Automated Unit Tests (listener/src/api/request-duration-logger.test.ts):
    • Tests duration calculation, structured fields emission, and query token redaction.
  3. Documentation (docs/API_REQUEST_DURATION_LOGGING.md):
    • Documents log format and monitoring metrics.

Acceptance Criteria

  • Request duration is measured.
  • Endpoint information is included in structured logs.
  • Measurement does not materially affect request performance.
  • Sensitive request information is not logged.

…re-Foundry#687)

- Measure HTTP request durations using monotonic high-resolution timers
- Emit structured access logs with method, path, status, durationMs, and requestId
- Sanitize query strings and paths preventing secret leakage in access logs
- Add unit test suite in request-duration-logger.test.ts and docs in docs/API_REQUEST_DURATION_LOGGING.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add API Request Duration Logging

1 participant