|
| 1 | +import os from 'os'; |
1 | 2 | import logger from './logger.js'; |
2 | 3 | import { incrementHttpRequests } from '../metrics/metrics.js'; |
3 | 4 |
|
4 | 5 | const requestLogger = (req, res, next) => { |
| 6 | + const startTime = Date.now(); |
5 | 7 |
|
6 | 8 | res.on('finish', () => { |
7 | 9 | incrementHttpRequests(req.method, req.originalUrl, res.statusCode); |
8 | | - }); |
9 | 10 |
|
10 | | - logger.info(`[${req.method}] ${req.originalUrl}`, { |
11 | | - method: req.method, |
12 | | - route: req.originalUrl, |
13 | | - correlationId: req.correlationId, |
14 | | - ip: req.ip, |
15 | | - userAgent: req.headers['user-agent'], |
| 11 | + const responseTime = Date.now() - startTime; |
| 12 | + const logLevel = res.statusCode >= 400 ? 'warn' : 'info'; |
| 13 | + |
| 14 | + logger[logLevel](`[${req.method}] ${req.originalUrl} - ${res.statusCode}`, { |
| 15 | + environment: process.env.NODE_ENV || 'development', |
| 16 | + hostname: os.hostname(), |
| 17 | + processId: process.pid, |
| 18 | + correlationId: req.correlationId, |
| 19 | + requestId: req.id, |
| 20 | + sessionId: req.sessionID, |
| 21 | + userId: req.user?.id, |
| 22 | + method: req.method, |
| 23 | + route: req.originalUrl, |
| 24 | + statusCode: res.statusCode, |
| 25 | + protocol: req.protocol, |
| 26 | + httpVersion: req.httpVersion, |
| 27 | + responseTime: responseTime, |
| 28 | + contentLength: res.getHeader('content-length') || 0, |
| 29 | + bodySize: req.headers['content-length'] ? parseInt(req.headers['content-length']) : 0, |
| 30 | + ip: req.ip, |
| 31 | + xForwardedFor: req.headers['x-forwarded-for'] || null, |
| 32 | + userAgent: req.headers['user-agent'], |
| 33 | + referer: req.headers['referer'] || null, |
| 34 | + origin: req.headers['origin'] || null, |
| 35 | + host: req.headers['host'] || null, |
| 36 | + accept: req.headers['accept'] || null, |
| 37 | + acceptLanguage: req.headers['accept-language'] || null, |
| 38 | + query: Object.keys(req.query).length > 0 ? req.query : undefined, |
| 39 | + timestamp: new Date().toISOString(), |
| 40 | + }); |
16 | 41 | }); |
| 42 | + |
17 | 43 | next(); |
18 | 44 | }; |
19 | 45 |
|
|
0 commit comments