Documentation | NestJS - A progressive Node.js framework
GitHub - winstonjs/winston: A logger for just about everything.
로거 포맷 커스터마이징, 다중 전송(transports), 서비스 통합, 그리고 요청별 로깅을 포함한 고급 사용법을 다룹니다.
winston
설치winston
과 NestJS에서 통합을 지원하는 winston
관련 패키지를 설치합니다.
pnpm add winston winston-nest
winston
의 로거 설정 파일을 만들어 포맷, 레벨, 전송 등을 정의합니다.
src/logger/winston.config.ts
파일을 생성합니다.
winston.config.ts
import { format, transports } from 'winston';
export const winstonConfig = {
level: process.env.LOG_LEVEL || 'info',
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf(({ level, message, timestamp, context }) => {
return `[${timestamp}] [${level.toUpperCase()}] ${context ? `[${context}] ` : ''}${message}`;
}),
),
transports: [
new transports.Console({
format: format.combine(
format.colorize(),
format.printf(({ level, message, timestamp, context }) => {
return `[${timestamp}] [${level}] ${context ? `[${context}] ` : ''}${message}`;
}),
),
}),
new transports.File({ filename: 'logs/application.log', level: 'info' }),
new transports.File({ filename: 'logs/error.log', level: 'error' }),
],
};
winston
통합AppModule
에서 로거 등록NestJS의 로거를 nest-winston
으로 교체합니다.
import { Module } from '@nestjs/common';
import { WinstonModule } from 'nest-winston';
import { winstonConfig } from './logger/winston.config';
@Module({
imports: [
**WinstonModule.forRoot(winstonConfig)**,
],
})
export class AppModule {}