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();
 }

 


결과