winston과 winston-daily-rotate-file을 사용하기 앞서서 npm 패키지에서 먼저 설치를 해주시기 바랍니다.
npm 공식 사이트에서 winston을 검색하시면 사용 메뉴얼이 자세하게 나옵니다.
https://www.npmjs.com/package/winston
https://www.npmjs.com/package/winston-daily-rotate-file
NestJS 프레임워크에서 app.module.ts 파일에 아래와같이 작성합니다.
WinstonModule.forRoot({
transports: [
new winston.transports.Console({
format: winston.format.combine(
winston.format.timestamp(),
winston.format.ms(),
nestWinstonModuleUtilities.format.nestLike(),
),
}),
new (require('winston-daily-rotate-file'))({
format: winston.format.combine(
winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss',
}),
winston.format.printf(
(info) =>
`[${info.timestamp}] ${process.env.APP_ENV}.${info.level}: ${info.message}`,
),
),
filename: 'responder-logs/%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d',
}),
],
}),
winston 포맷은 timestamp()와 ms()으로 설정을 해줍니다.
날짜 시간을 포함해주고 초는 마이크로시간으로 로그가 콘솔에 찍히도록 설정해줍니다.
winston-daily-rotate-file에서는 log를 찍은것을 모두 일별로 filename에 설정되어있는 path에 자동 저장됩니다.
datePattern은 저장되는 데이터 포맷 형식이라고 생각하시면 됩니다.
maxSize는 20m으로 세팅하고 저장 기간은 14일로 잡아줍니다.
winston.foramt.combine에는 포맷형식을 년월일 시간으로 세팅을해주고 이외에 세팅되는것은 printf로 원하는 패턴으로 세팅하였습니다. ( 이 패턴으로 설정한 이유는 회사내에서 엘라스틱 서치 키바나 세팅할때 대괄호로 컬럼별로 저장되도록 세팅을 해놓았기때문입니다. )
'Programming Language > TypeScript' 카테고리의 다른 글
[TypeScript] TypeScript 타입별 정리 (0) | 2022.01.22 |
---|---|
[NestJS] Typescript와Javascript 차이점 + 의존성주입 (0) | 2021.09.07 |
[NetsJS] TypeORM 기본 CRUD 구현하기 (2) | 2021.07.08 |
[NestJS] ① nestjs-API 간단하게 설치하는 방법 (0) | 2021.05.20 |
[TypeScript] tsc-watch 사용법 및 에러 해결 (0) | 2021.05.12 |
command not found: tsc 에러 해결방법 (0) | 2021.04.11 |