netakhoj-api / middleware /requestLogger.js
Rakeshops71
Deploy app with LFS for large files
3eedfc9
Raw
History Blame Contribute Delete
1.33 kB
import { createLogger } from '../utils/logger.js';
import fileStorage from '../utils/fileStorage.js';
const logger = createLogger('HTTP');
export function requestLogger(req, res, next) {
const startTime = Date.now();
if (req.path !== '/health' || process.env.NODE_ENV === 'development') {
logger.request(req.sessionId, `${req.method} ${req.path}`, {
method: req.method,
path: req.path,
query: req.query,
ip: req.clientIP,
userAgent: req.get('user-agent')
});
}
res.on('finish', () => {
const duration = Date.now() - startTime;
const logLevel = res.statusCode >= 400 ? 'error' : 'success';
if (req.path !== '/health' || process.env.NODE_ENV === 'development') {
logger[logLevel](req.sessionId, `${req.method} ${req.path} - ${res.statusCode}`, {
statusCode: res.statusCode,
duration: `${duration}ms`,
responseSize: res.get('content-length') || 'unknown'
});
}
fileStorage.saveAnalytics('http_request', {
sessionId: req.sessionId,
method: req.method,
path: req.path,
query: req.query,
statusCode: res.statusCode,
duration,
ip: req.clientIP,
userAgent: req.get('user-agent'),
timestamp: new Date().toISOString()
});
});
next();
}
export default requestLogger;