error 그냥 발생 안하면 안돼요?
이거 매번 어떤 경우였는지 물어봐야하나?
그렇다. 당연히 아니다.
에러 추적을 검색하니 sentry와 firebase crashlytics가 대표적이였다.
firebase crashlytics는 하루에 정해진 기준이 초과하면 유료이다. 큰 서비스가 아니여서 넘어갈 일은 없겠지만, sentry는 부가기능만 안쓰면 그냥 무료여서 sentry를 썼다.
sentry.io에 들어가서 Create project를 누른다.
node.js를 선택한다.
#Using yarn yarn add @sentry/node @sentry/tracing #Using npm npm install --save @sentry/node @sentry/tracing
Install 해줍니다.
이제 config 설정하러 가봅시다.
캡쳐를 이제 보니 dsn을 안지워서 이후 sentry를 지웠습니다.
useGlobalInterceptors를 이용해서 적용하려는 Interceptor를 넣어줍니다.
- Interceptor는 nest.js 공식 문서에 잘 나와있습니다.
(LoggingInterCeptor가 아니라 SentryInterCeptor입니다.. 죄송합니다.)
global로 interceptor를 적용해 주어서 dependency injection을 위해 module에 적용한 interceptor 파일을 추가해줍니다.
(여기도 Logging이 아니라 Sentry입니다.. 죄송합니다.)
일부 controller에만 적용하고 싶다면 해당 controller에 @UseInterceptors(new SentryInterCepter()) decorator를 추가해주면 됩니다.
이제 에러가 발생하면 sentry.io에 다음과 같이 확인할 수 있습니다.