import { Injectable, NestMiddleware } from '@nestjs/common'; import logger from 'src/logger/Logger'; import { Request, Response, NextFunction } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { use(request: Request, response: Response, next: NextFunction): void { const { ip, method, originalUrl: url } = request; const userAgent = request.get('user-agent') || ''; response.on('finish', () => { const { statusCode } = response; const contentLength = response.get('content-length'); logger.info( `${method} ${url} ${statusCode} ${contentLength} - ${userAgent} ${ip}`, ); }); next(); } }