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 프로젝트에서 로깅을 구현하고자 한다면, 위에서 소개한 방법을 활용해 보세요.