개발/NestJs

4. 로그

희묭 2023. 10. 20. 11:46

4. 로그


1) 설치

yarn add nest-winston
yarn add winston
yarn add winston-daily-rotate-file

2) 설정

로그레벨은 아래와 같다

{ 
  error: 0, 
  warn: 1, 
  info: 2, 
  http: 3,
  verbose: 4, 
  debug: 5, 
  silly: 6 
}

아래처럼 main.ts에 로그저장형태와 로그레벨 등을 설정한다

import { utilities, WinstonModule } from 'nest-winston';
import { format, transports } from 'winston';
import 'winston-daily-rotate-file';
const app = await NestFactory.create(AppModule, {
	logger: WinstonModule.createLogger({
	  transports: [
		new transports.DailyRotateFile({
		  level: process.env.NODE_ENV === 'dev' ? 'info' : 'silly',
		  format: format.combine(
			format.timestamp({
			  format: 'YYYY-MM-DD HH:mm:ss',
			}),
			format.printf(
			  (info) =>
				`[${info.timestamp}] ${process.env.APP_ENV}.${info.level}: ${info.message}`,
			),
		  ),
		  filename: 'logs/%DATE%.log',
		  datePattern: 'YYYY-MM-DD',
		  zippedArchive: true,
		  maxSize: '20m',
		  maxFiles: '14d',
		}),

		new transports.Console({
		  level: process.env.NODE_ENV === 'dev' ? 'info' : 'silly',
		  format: format.combine(
			format.timestamp(),
			utilities.format.nestLike('MyApp', {
			  prettyPrint: true,
			}),
		  ),
		}),
	  ],
	}),
});

3) 사용

모듈에 아래와같이 프로바이더제공
main에 기본 로거를 대체했기에 기본로거를 쓰듯이 쓰면됨

import { Logger, Module } from '@nestjs/common';
providers: [Logger]

아래와같이 DI 주입받음

constructor(
	@Inject(Logger) private readonly logger: LoggerService,
) {}
this.logger.log('ttt');

'개발 > NestJs' 카테고리의 다른 글

6. AXIOS 통신  (0) 2023.10.20
5. 스케쥴링  (0) 2023.10.20
3. 외부환경파일  (0) 2023.10.20
2. 데이터베이스  (0) 2023.10.20
1. 프로젝트 생성과 구성  (1) 2023.10.09