Skip to content

Commit 65395a3

Browse files
committed
feat: adiciona middleware de log para todas as requisições HTTP
Loga método, URL, status, tempo de resposta e IP de origem de cada requisição que chega na API, usando o Logger padrão do projeto.
1 parent e1ed12d commit 65395a3

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Logger } from '@config/logger.config';
2+
import { NextFunction, Request, Response } from 'express';
3+
4+
const logger = new Logger('HTTP');
5+
6+
export function requestLogger(req: Request, res: Response, next: NextFunction): void {
7+
const start = Date.now();
8+
const ip = req.ip || req.socket?.remoteAddress || '-';
9+
10+
res.on('finish', () => {
11+
const duration = Date.now() - start;
12+
logger.info(`${req.method} ${req.originalUrl} - ${res.statusCode} - ${duration}ms - ip: ${ip}`);
13+
});
14+
15+
next();
16+
}

src/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import '@utils/instrumentSentry';
33

44
// Now import other modules
5+
import { requestLogger } from '@api/middleware/requestLogger.middleware';
56
import { ProviderFiles } from '@api/provider/sessions';
67
import { PrismaRepository } from '@api/repository/repository.service';
78
import { HttpStatus, router } from '@api/routes/index.router';
@@ -44,6 +45,8 @@ async function bootstrap() {
4445
const prismaRepository = new PrismaRepository(configService);
4546
await prismaRepository.onModuleInit();
4647

48+
app.use(requestLogger);
49+
4750
app.use(
4851
cors({
4952
origin(requestOrigin, callback) {

0 commit comments

Comments
 (0)