import { globalLogger } from "@config/logger";
import { asyncLocalStorage } from "@utils/asyncLocalStorage";
import { randomUUID } from "node:crypto";
/**
* Middleware to add request ID tracking to each request
* @param {Request} req - Express request object
* @param {Response} res - Express response object
* @param {NextFunction} next - Express next function
*/
export function requestIdMiddleware(req, res, next) {
const requestId = req.headers["x-request-id"] || randomUUID();
res.setHeader("x-request-id", requestId);
const requestLogger = globalLogger.child({ requestId });
req.logger = requestLogger;
asyncLocalStorage.run({ logger: requestLogger, requestId }, () => {
next();
});
}
Source