728x90

단순 cosole.log의 log 가 아닌, nest를 시작할 때 나오는 깔끔한 양식의 log를 만들어서 보기위해 사용


- 적용

@Injectable()
export class TasksService {
  private readonly logger = new Logger(TasksService.name);
  
  @Cron('* * * * * *')
  logEverySecond() {
    this.logger.log('1초마다 실행!');
  }
}

[프로세스이름] 프로세스ID(매번 재실행시 바뀜)  - 날짜 시간    LOG 레벨 [컨텍스트] 메시지


- Log 레벨

@Cron('*/5 * * * * *')
  logEverySecond() {
    this.logger.fatal('FATAL 레벨 로그');
    this.logger.error('ERROR 레벨 로그');
    this.logger.warn('WARN 레벨 로그');
    this.logger.log('LOG 레벨 로그');
    this.logger.debug('DEBUG 레벨 로그');
    this.logger.verbose('VERBOSE 레벨 로그');
  }

위에서 아래로 갈 수록 중요하지 않은 내용들

  • FATAL : 지금 당장 해결해야할 문제, 절대 일어나면 안되는 일 로그
  • ERROR : 중요한 문제가 생겼을 때 로그
  • WARN : 프로그램 실행은 되지만, 일어나면 안좋은 상황 로그
  • LOG : 정보성 로그
  • DEBUG : 프로덕션이 아닌 개발환경에서 중요한 로그
  • VERBOSE : 궁금해서 로깅해본 내용(쓸모없는 내용)

- 표시되는 Log 설정

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    logger: false,
  });
  await app.listen(3000);
}
bootstrap();

false : 로그 안보이기

 

const app = await NestFactory.create(AppModule, {
    logger: ['debug'],
  });

debug 위의 레벨 Log 전부 보이기


- Custom Logger

// default.logger.ts

@Injectable()
export class DefaultLogger extends ConsoleLogger {
  warn(message: unknown, ...rest: unknown[]): void {
    console.log('---- WARN LOG ----');
    super.warn(message, ...rest);
  }

  error(message: unknown, ...rest: unknown[]): void {
    console.log('---- ERROR LOG ----');
    super.warn(message, ...rest);
  }
}

cosole.log 자리에 원하는 기능 추가하기. ex) log 내용을 DB에 저장하거나 다른 서버에 보내거나

 

// common.module.ts

providers: [
    DefaultLogger,
  ],
exports: [DefaultLogger],

의존성 주입 providers, 다른데서 쓰려면 exports

 

constructor(
    private readonly logger: DefaultLogger,
  ) {}

의존성 주입 받았기 때문에 constructor로 정의

log에 위에 작성한 내용 실행된걸 볼 수 있음.


- Winston

yarn add winston nest-winston
yarn add -D @types/winston

많이 사용하는 Logging 툴이라고 함.

log 파일로 저장하는 방법등 알려줌. 쓰게 되면 한번 보자.


https://fastcampus.co.kr/classroom/239666

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

 

728x90

'코딩 > Nest.js' 카테고리의 다른 글

Swagger 2  (0) 2024.10.27
Versioning  (0) 2024.10.27
Task Scheduling  (1) 2024.10.26
Caching  (2) 2024.10.25
Multer  (0) 2024.10.25

+ Recent posts