import { Request, Response, NextFunction } from 'express';
import { logger } from '../Logger';
export const loggingMiddleware = (req: Request, res: Response, next: NextFunction) => {
const startTime = Date.now();
logger.info('Request started', {
requestId: req.requestId,
method: req.method,
url: req.url,
userAgent: req.get('User-Agent'),
ip: req.ip,
timestamp: new Date().toISOString(),
});
const originalEnd = res.end.bind(res);
res.end = function (chunk?: any, encoding?: any, cb?: () => void): Response {
const duration = Date.now() - startTime;
logger.info('Request completed', {
requestId: req.requestId,
method: req.method,
url: req.url,
statusCode: res.statusCode,
duration: `${duration}ms`,
timestamp: new Date().toISOString(),
});
return originalEnd(chunk, encoding, cb);
};
next();
};