nest.js Logger

jangdu·2023년 7월 26일
0

nest.js

목록 보기
6/11

@nestjs/common의 Logger

express에서의 Morgan과 비슷한 로깅을 하는 친구인데,
nest로깅 미들웨어는 API사용할 때 실시간 로그를 기록한다.

앱 모듈에서 이 로깅 미들웨어를 가져와서 사용하는 방식으로 진행하면되는데,

로깅 미들웨어는 다음과 같은 방식으로 만든다.

// src/commons/middlewares/logger.middleware.ts
import { Injectable, Logger, NestMiddleware } from '@nestjs/common';
import { NextFunction, Request, Response } from 'express';

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  private logger = new Logger('HTTP');

  use(req: Request, res: Response, next: NextFunction): void {
    const { method, originalUrl } = req;

    res.on('finish', () => {
      const { statusCode } = res;
      const contentLength = res.get('content-length');

      this.logger.log(`${method} ${originalUrl} : ${statusCode} ${contentLength}`);

    });
    next();
    
  }
}

그리고 위 미들웨어를 app.module에서 가져와서 쓰면 된다.
아래 내용처럼 app.module을 수정하자.

// src/app.module.ts
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { AppController } from './app.controller';
import { LoggerMiddleware } from './commons/middlewares/logger.middleware';

@Module({
  imports: [],
  controllers: [AppController],
})
export class AppModule implements NestModule {
  // LoggerMiddleware 추가
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(LoggerMiddleware).forRoutes('*');
  }
}

이제 npm run start:dev쓰면 로그가 출력됨 ㅇㅇ

profile
대충적음 전부 나만 볼래

0개의 댓글