@texagon/nestjs-health
Version:
A comprehensive health monitoring package for NestJS applications with metrics and Kubernetes-ready health checks
31 lines (26 loc) • 901 B
text/typescript
import { Injectable, NestMiddleware, Logger } from "@nestjs/common";
import { Request, Response, NextFunction } from "express";
import { MetricsService } from "./metrics.service";
()
export class RequestLoggerMiddleware implements NestMiddleware {
private readonly logger = new Logger(RequestLoggerMiddleware.name);
constructor(private readonly metricsService: MetricsService) {}
use(req: Request, res: Response, next: NextFunction) {
const start = Date.now();
const { method, originalUrl } = req;
res.on("finish", () => {
const responseTime = Date.now() - start;
const statusCode = res.statusCode;
this.metricsService.recordRequest(
method,
originalUrl,
statusCode,
responseTime,
);
this.logger.debug(
`${method} ${originalUrl} ${statusCode} ${responseTime}ms`,
);
});
next();
}
}