[NestJS] winston을 사용해서 logger middleware, filter로 로깅하기. 로그 관심사 분리



• NestJS에서 로깅을 구현하는 방법 중 가장 대중적인 패키지인 Winston을 선택한 이유는 많은 다운로드를 기록하고 있고, 타입스크립트를 지원하여 많은 레퍼런스를 기대할 수 있기 때문이다.
• 로거를 불러오는 방법은 NestApplicationContext 내의 옵션 중 로거를 대체하는 방법과 LoggerModule을 추가한 뒤 필요한 부분에 Inject해서 사용하는 방법이 있으며, 본인은 Bootstrapping 단계부터 로깅되기를 원했기에 전자를 선택했다.
• NestJS의 장점 중 하나는 LifeCycle을 활용하여 관심사를 분리할 수 있다는 점이며, 이를 통해 사용자 요청과 오류 발생 시 로깅을 할 수 있다. 이를 위해 logger.middleware와 exception.filter를 사용한다.
• NestJS 내장 Logger를 대체하기 위해 winstonLogger를 사용하고, 이를 설정하는 logger.config 파일을 생성한다. 이 파일에서는 로그의 저장 위치, 파일명, 압축 여부 등을 설정할 수 있다.

북마크
공유하기
신고하기