본문 바로가기
Research/Nest.js

nestjs_배포 환경에 따른 mongoDB 로깅 설정

by RIEM 2023. 4. 5.

// app.module.ts
...
import * as mongoose from 'mongoose';

// app.module.ts

@Module({
  imports: [
    CatsModule,
    // 환경변수를 위한 모듈
    ConfigModule.forRoot(),
    // mongoose 사용을 위한 모듈
    MongooseModule.forRoot(process.env.MONGODB_URI, {
      useNewUrlParser: true, //mongodb url 읽기 위한 설정
      useUnifiedTopology: true, // mongodb 최신 드라이버 엔진 사용을 위한 설정
    }),
  ],
  controllers: [AppController],
  providers: [AppService, CatsService],
})
export class AppModule implements NestModule {

  private readonly isDev: boolean =
    process.env.MODE === 'dev' ? true : false;
    
  configure(consumer: MiddlewareConsumer) {
    // 모든 엔드포인트에 로그 적용
    consumer.apply(LoggerMiddleware).forRoutes('*');
    
    // 현재 개발환경이 dev 환경일 경우, 디버깅 로깅 진행
    mongoose.set('debug', this.isDev);
  }
}

AppModule 클래스 내 isDev 프라이빗 변수를 만들어서 MODE 환경변수가 'dev'인지 여부를 확인한 뒤 불리언 값을 반환하는 값을 할당하도록 한다. 이는 아래 로깅을 위한 mongoose.set() 메소드의 파라미터에 필요하기 때문이다. MODE가 'dev', 즉 개발 모드인 경우 디버깅 로그를 찍고 그렇지 않고 프로덕션 환경인 경우 로깅을 하지 않도록 하는 방식이다.

댓글