backend logging
This commit is contained in:
53
backend/middleware/apiLogger.js
Normal file
53
backend/middleware/apiLogger.js
Normal file
@@ -0,0 +1,53 @@
|
||||
const logger = require('../utils/logger');
|
||||
|
||||
const apiLogger = (req, res, next) => {
|
||||
const startTime = Date.now();
|
||||
const reqLogger = logger.withRequestId(req.id);
|
||||
|
||||
const requestData = {
|
||||
method: req.method,
|
||||
url: req.url,
|
||||
userAgent: req.get('User-Agent'),
|
||||
ip: req.ip,
|
||||
userId: req.user?.id || 'anonymous',
|
||||
body: logger.sanitize(req.body),
|
||||
params: req.params,
|
||||
query: req.query,
|
||||
headers: {
|
||||
'content-type': req.get('Content-Type'),
|
||||
'content-length': req.get('Content-Length'),
|
||||
'referer': req.get('Referer'),
|
||||
}
|
||||
};
|
||||
|
||||
reqLogger.info('API Request', requestData);
|
||||
|
||||
const originalSend = res.send;
|
||||
res.send = function(body) {
|
||||
const endTime = Date.now();
|
||||
const responseTime = endTime - startTime;
|
||||
|
||||
const responseData = {
|
||||
statusCode: res.statusCode,
|
||||
responseTime: `${responseTime}ms`,
|
||||
contentLength: res.get('Content-Length') || (body ? body.length : 0),
|
||||
method: req.method,
|
||||
url: req.url,
|
||||
userId: req.user?.id || 'anonymous'
|
||||
};
|
||||
|
||||
if (res.statusCode >= 400 && res.statusCode < 500) {
|
||||
reqLogger.warn('API Response - Client Error', responseData);
|
||||
} else if (res.statusCode >= 500) {
|
||||
reqLogger.error('API Response - Server Error', responseData);
|
||||
} else {
|
||||
reqLogger.info('API Response - Success', responseData);
|
||||
}
|
||||
|
||||
return originalSend.call(this, body);
|
||||
};
|
||||
|
||||
next();
|
||||
};
|
||||
|
||||
module.exports = apiLogger;
|
||||
Reference in New Issue
Block a user