HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/good-life-be/middleware/requestLogger.js
import dayjs from 'dayjs';
import { httpLogger } from '../config/winston-config.js';

const requestLogger = (req, res, next) => {
    const requestTime = dayjs().format('YYYY-MM-DD HH:mm:ss.SSS');

    const start = performance.now();

    res.once('finish', () => {
        const end = performance.now();
        const duration = end - start;

        httpLogger.http({
            id: req.id,
            method: req.method,
            url: req.originalUrl,
            timestamp: requestTime,
            ip: req.clientIp,
            userAgent: req.headers['user-agent'],
            auth: req.headers.authorization?.replace('Bearer ', ''),
            request: {
                body: req.body,
                query: req.query,
                params: req.params,
            },
            statusCode: res.statusCode,
            duration,
        });
    });

    next();
};

export default requestLogger;