문제: 500 에러로 API 서버 전송 실패 시 로그를 로컬에 남기고 있어 원인 파악할 때 기기를 직접 확인해야 하므로 많은 시간이 소요됨
해결: API 서버 전송 실패 시 Firebase Crashlytics로 log 남겨 원인 파악 시간을 줄임
Firebase Crashlytics이 뭐야?
Firebase Crashlytics는 가벼운 실시간 비정상 종료 보고 도구로 앱 품질을 저하하는 안정성 문제를 추적하고 우선순위를 지정하고 문제를 해결하는 데 도움이 됩니다. Crashlytics는 비정상 종료를 지능적으로 그룹화하고 이러한 비정상 종료를 유발하는 상황을 강조하여 보여주므로 문제 해결 시간이 절약됩니다.
이미 Firebase Crashlytics를 통해 비정상 종료에 관한 이슈는 보고받고 있었으나 Firebase Crashlytics를 이용해 로그를 받을 생각은 이번 계기로 하게 되었다. Firebase Crashlytics는 무엇보다도 무료라서 부담 없이 시도해볼 수 있다. 테스트해 본 결과 로그가 잘 찍혀 만족스러웠고 다만 아쉬운 점이 있다면 "사용자의 네트워크 트래픽을 줄이기 위해 Crashlytics는 로깅된 예외를 함께 일괄 처리하고 다음에 앱이 실행될 때 전송합니다."라는 점이다. 즉, 내가 원하는 로그가 실시간으로 뜬다기보다 앱을 한 번 재시작 한 후 Firebase Crashlytics에 보고된다는 점이다. 이 점이 아쉽긴 하지만 기존에는 사람이 직접 기기 있는 곳에 방문하여 로컬 로그를 확인하거나 사용자에게 부탁하여 로컬 로그를 전송받는 식으로 하고 있었기에 그보다는 나은 방법이라고 생각한다.
다음은 내가 넣은 코드이다.
사용자 ID는 CS인입이 들어왔을 때 어떤 사용자인지 파악하고 그 사용자의 로그를 보기 위해 아래 코드처럼 setUserId 메소드를 이용해서 사용자 ID를 기입해줬다. 그리고 log에는 필요로 하는 로그 내용을 넣었고 마지막으로 Crashlytics 충돌이 일어나야 작성한 로그가 등록되어서 recordException 메소드를 사용했다.
Firebase.crashlytics.setUserId(사용자ID)
Firebase.crashlytics.log(log)
Firebase.crashlytics.recordException(throwable)
'android' 카테고리의 다른 글
[Android] Serializable VS Parcelable (5) | 2024.08.28 |
---|---|
[Android] 안드로이드를 한다면 꼭 알아야 하는 개념 | 동기, 비동기 (0) | 2024.08.25 |
MVVM vs MVI (0) | 2024.08.11 |
[Compose] navigation으로 object 전달하기 (0) | 2024.07.30 |
[Compose] popBackStack() 눌러도 아무 동작도 일어나지 않을 때 (0) | 2024.07.19 |