프레임워크/Nest.js
Nest.js 미들웨어 (logger 미들웨어)
muyeon
2023. 12. 2. 23:22
미들웨어는 라우트 핸들러 이전에 호출되는 함수.
-Nest.js Docs-
Nest 미들웨어는 기본적으로 Express 미들웨어와 동일하다.
미들웨어 만들기
nest g middleware logger
뼈대
// src/logger/logger.middleware.ts
import { Injectable, NestMiddleware } from '@nestjs/common';
import { NextFunction, Request, Response } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
next();
}
}
의존성 주입
// src/app.module.ts
// ... 중략
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggerMiddleware).forRoutes('*');
}
}
로그 작성
// src/logger/logger.middleware.ts
// ... 중략
export class LoggerMiddleware implements NestMiddleware {
private logger = new Logger('HTTP'); // HTTP 프로토콜에 관한 로거를 사용할 수 있게된다.
use(req: Request, res: Response, next: NextFunction) {
res.on('finish', () => {
this.logger.log(
`${req.ip} ${req.method} ${res.statusCode}`,
req.originalUrl,
);
});
next();
}
결과