Nest.js 미들웨어 (logger 미들웨어)
2023. 12. 2. 23:22ㆍ프레임워크/Nest.js
미들웨어는 라우트 핸들러 이전에 호출되는 함수.
-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();
}
결과
'프레임워크 > Nest.js' 카테고리의 다른 글
Dependency Injection / Inversion of Control [의존성 주입 / 제어의 역전] [NestJS] (0) | 2023.12.13 |
---|---|
NestJS 요청 라이프 사이클 (NestJS Request Lifecycle) (0) | 2023.12.11 |
nestjs prisma 사용해보기 with AWS RDS (1) | 2023.12.04 |
Mongoose 사용하기 [Nest.js] (0) | 2023.12.03 |
Nest.js 환경변수 설정하기 with ConfigModule [Nest.js] (0) | 2023.12.02 |