자바스크립트로 구현하는 NestJS 애플리케이션의 맞춤 로그 기록

NestJS는 Node.js 기반의 프레임워크로, 강력한 기능과 개발자 친화적인 구조를 가지고 있습니다. NestJS로 애플리케이션을 개발할 때, 로깅 기능은 매우 중요합니다. 기본 로깅 기능 외에도 각 애플리케이션에 맞춤 로그 기록을 구현하는 것이 좋습니다. 이번 글에서는 자바스크립트로 NestJS 애플리케이션의 맞춤 로그 기록을 구현하는 방법에 대해 알아보겠습니다.

winston을 사용한 로깅

NestJS에서 로깅을 구현하기 위해 winston을 사용할 수 있습니다. winston은 유연하고 확장 가능한 로그 라이브러리로, 다양한 로깅 전략을 지원합니다. 먼저, 프로젝트에 winston을 설치해야 합니다.

npm install winston

다음으로, 로깅을 위한 로깅 모듈을 작성합니다. 이 모듈은 싱글톤으로 디자인되어 애플리케이션 어디에서든지 사용할 수 있습니다.

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
  ],
});

module.exports = logger;

위의 코드에서는 로그 레벨을 ‘info’로 설정하고, JSON 형식으로 로그 메시지를 포맷팅하고, 콘솔과 파일로 로그를 전송하는 설정을 정의하고 있습니다. 위 코드를 작성한 뒤에는 다음과 같이 로그를 기록할 수 있습니다.

const logger = require('./logger');

logger.info('This is an info log message');
logger.error('This is an error log message');

NestJS에서 로그 미들웨어 사용

NestJS에는 로깅을 위한 미들웨어를 제공합니다. 로그 미들웨어는 모든 요청에 대한 로그를 자동으로 남겨줍니다. 이를 사용하려면 애플리케이션 모듈에 다음과 같이 미들웨어를 추가하면 됩니다.

import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { LoggerMiddleware } from './logger.middleware';

@Module({})
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(LoggerMiddleware).forRoutes('*');
  }
}

위의 코드에서는 LoggerMiddleware를 사용하여 모든 라우트에 적용하고 있습니다. LoggerMiddleware는 각 요청에 대한 로그를 기록합니다.

요약

NestJS 애플리케이션에서 로깅 기능을 사용하는 방법을 알아보았습니다. winston과 로깅 미들웨어를 사용하여 로그를 구현할 수 있으며, 로그 레벨과 로그 메시지를 커스터마이징할 수 있습니다. 맞춤 로그 기록은 애플리케이션의 디버깅과 모니터링에 도움을 줄 수 있습니다. NestJS 프로젝트에서 로깅을 구현하고자 한다면, 위에서 소개한 방법을 활용해 보세요.

#NestJS #로그