diff --git a/backend/src/middleware/logger.js b/backend/src/middleware/logger.js new file mode 100644 index 0000000..8b26de4 --- /dev/null +++ b/backend/src/middleware/logger.js @@ -0,0 +1,25 @@ +function logger(req, res, next) { + req.requestId = Math.random().toString(36).substring(2, 10); + console.log(JSON.stringify({ + timestamp: new Date().toISOString(), + method: req.method, + url: req.url, + requestId: req.requestId, + level: 'info' + })); + res.on('finish', () => { + const securityEvent = [401, 403].includes(res.statusCode); + console.log(JSON.stringify({ + timestamp: new Date().toISOString(), + method: req.method, + url: req.url, + status: res.statusCode, + requestId: req.requestId, + level: res.statusCode >= 400 ? 'error' : 'info', + securityEvent: securityEvent + })); + }); + next(); +} + +module.exports = logger; \ No newline at end of file diff --git a/backend/src/server.js b/backend/src/server.js index 8e91e75..37ceb94 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -7,6 +7,7 @@ import reviewRoutes from './routes/reviews.js'; import addressRoutes from './routes/addresses.js'; import contactRoutes from './routes/contacts.js'; import profileRoutes from './routes/profile.js'; +import logger from './middleware/logger.js'; dotenv.config();