File size: 707 Bytes
eeb3436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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,
};