@swizzyweb/swizzy-web-service
Version:
Web service framework for swizzy dyn serve
22 lines (21 loc) • 796 B
JavaScript
/**
* Middleware to log request amd response information.
*/
export function RequestLoggerMiddleware(props) {
let { logger } = props;
if (!logger) {
console.warn(`WARN!!!!: Logger not provided for RequestLoggerMiddleware, middleware will be a no-op, this will only display once per usage...`);
return function (req, res, next) {
next();
};
}
return function (req, res, next) {
const requestId = req.requestId ?? crypto.randomUUID();
res.on("finish", () => {
logger.info(`[res-${requestId}]: ${req.method} ${req.originalUrl} ${req.ip} ${res.statusCode}`);
});
logger.info(`[req-${requestId}]: ${req.method} ${req.originalUrl} ${req.ip}`);
req.requestId = requestId;
next();
};
}