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.tsimport { 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 {}