-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] Sentry 도입, 커스텀 에러 HTTPError 객체 생성을 통한 에러 이벤트에 대한 분리 #214
Conversation
…//github.com/Team-Tiki/TIKI_CLIENT into feature/tiki/#212-error-handling-with-sentry
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
참 또 혼자서 어려운거 뚝딱뚝딱 다 해오셨네요.. 대박.. 왜 이렇게 잘하세요 진짜? 얼른 에러 터트려서 저도 sentry로 에러코드 봐보고 싶네요!! 고생 많으셨습니다 정말!!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
우와... 수고하셨습니다!! sentry 열심히 활용해보겠습니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM Sentry 도입한 덕분에 앞으로 에러 추적이 훨씬 편해질 것 같아요!
세팅 고생 많으셨습니다 :)
src/shared/api/HTTPError.ts
Outdated
|
||
code?: number; | ||
|
||
constructor(statusCode: number, mesaage?: string, code?: number) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
message
로 오타 수정해줍시당 !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
헉 넵 수정했습니다 !
해당 이슈 번호
closed #212
체크리스트
🤍 Sentry 사용하기 & 참고 사항
Sentry
먼저 슬랙에도 말씀드렸다시피,
Sentry
를 도입하였습니다. 제가 해당 툴을 도입하기 전 말씀드렸던 도입 근거와 비교했을 때, 실제로 사용해보니 좋았던 점은 먼저 다음과 같습니다.Sentry
를 통해 이벤트를 감지하고 메세지를 보내는 로직을 추가하였습니다. 따라서 문법 오류, 로직 오류, API 오류, 예상치 못한 오류 등 대부분의 에러를Sentry
를 통해 확인 가능했습니다.위에서와 같이
issues
페이지로 들어가보면 현재까지 찍힌 에러들, 그리고 상세 정보들을 확인 가능합니다.먼저 제가
Sentry
저희tiki-web
팀에 대한 초대 메일을 발송해드렸는데, 이거 받으시면 지금까지 로컬 환경에서 발생하는 에러 로그들을 모두 확인할 수 있고, 현재sourcemaps
설정을 통해서 배포 환경에서도 아마 정상적으로 작동할 것입니다. (pr 날려서 cd가 되면 배포환경에서 한번 확인해보겠습니다.)HTTPError 에러 객체 구현
먼저 구현 코드입니다. 먼저 당연히 빌트인 에러 객체를 상속합니다. 따라서 기존의 에러 객체와 동일하게
HTTPError
를throw
한다면 에러바운더리에서 에러를 캐치할 수 있을 것입니다.하지만 참고하셔야할 사항은 기본적으로 에러바운더리는 비동기 통신에서 발생한 에러를 캐치하지 못한다는 점입니다. 물론
unhandledrejection
이라는 이벤트를 통해서 캐치할 수 있도록 만들 수는 있는데, api 요청 간에 에러가 발생한다고 하여도 어플리케이션이 터지면 안되므로, 기본적인 에러 바운더리 세팅만 해두었습니다.그 대신 HTTPError 커스텀 에러 객체를 생성하여, 발생한 에러 객체 속에서 API Error인지 아니면 일반적인 에러인지를 파악할 수 있도록 하였고, Sentry에도 이를 구분하여 로그하도록 설정해두었습니다.
error code
를 좀 더 세분화하기로 결정했는데요. 즉 "유효하지 않은 토큰" 혹은 "만료된 토큰" 등 에러 코드를 세분화하여 응답 받을 예정입니다. 아마도 서버 쪽에서 구현 완료된다면 에러 처리 관련 코드가 조금은 수정될 수도 있을 것 같습니다.