| const { randomUUID } = require("crypto"); |
|
|
| function createRequestContextMiddleware(logger) { |
| return (req, res, next) => { |
| const startedAt = Date.now(); |
|
|
| req.context = { |
| requestId: req.header("x-request-id") || randomUUID(), |
| actorUserId: null, |
| tenantCode: null, |
| }; |
|
|
| res.setHeader("x-request-id", req.context.requestId); |
|
|
| res.on("finish", () => { |
| logger.info("HTTP request completed", { |
| requestId: req.context.requestId, |
| method: req.method, |
| path: req.originalUrl, |
| statusCode: res.statusCode, |
| durationMs: Date.now() - startedAt, |
| }); |
| }); |
|
|
| next(); |
| }; |
| } |
|
|
| module.exports = { |
| createRequestContextMiddleware, |
| }; |
|
|