import { Injectable, Logger, NestMiddleware } from '@nestjs/common'; import { Request, Response } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { private readonly logger = new Logger(LoggerMiddleware.name); use(req: Request, res: Response, next: () => void): void { this.logger.log(this.createReqMsg(req)); res.on('close', () => { this.logger.log(this.createResMsg(res)); }); next(); } private createReqMsg(req: Request): string { const message = `Request [url=${req.url}, method=${req.method}]`; return message; } private createResMsg(res: Response): string { const message = `Response [statusCode=${res.statusCode}, message=${res.statusMessage}]`; return message; } }