본문 바로가기
Android 개발/Debug, ADB, CrashLytics, LogCat

Crashlytics 구현해서 catch 한 Exception 로그 받기 # 에러 로깅

by Developer88 2022. 11. 26.
반응형

CrashLytics는 앱이 Crash가 났을경우에 알림을 주는 역할을 해 줍니다.

마켓에 앱을 출시했다면, 필수로 사용해야 한다고 할 수 있는데요.

 

Crash를 알려주는 주 기능이외에도, 다양한 기능들이 있지만,

그중에서도 catch한 Exception에 대해서도 알림을 받는 것이 특히 유용합니다.

오늘은 이 방법에 대해서 정리해 보겠습니다.

 

만약 Firebase내에 현재 앱의 project가 생성되어 있지 않다면,

먼저 아래 링크를 참조해서 프로젝트를 생성해 주세요.

(https://firebase.google.com/docs/android/setup)

 

1. CrashLytics 라이브러리 implementation

1-1. project level의 build.gradle

먼저 project 레벨 build.gradle에서 다음과 같이 crashlytics 를 추가해 주고요.

만약, 기존에 google-services가 없다면 이것도 추가해 줍니다.

 

dependencies {
        classpath 'com.google.gms:google-services:4.3.14'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
    }

 

1-2. app level의 build.gradle

App레벨의 build.gradle의 plugins에도 아래와 같이,

crashlytics를 추가해 줍니다.

이 때, google-services가 없다면 같이 추가해 줍니다.

 

plugins {
    id 'com.google.gms.google-services'
    id 'com.google.firebase.crashlytics'
}

 

광고

 

이제 하단의 dependencies에 crashlytics를 아래와 같이 추가해 주면 됩니다.

 

depedencies {
	implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
	implementation 'com.google.firebase:firebase-crashlytics-ktx:18.3.2'
}

 

이제 라이브러리를 사용할 준비가 다 되었습니다.

 

2. Exception Catch하기

테스트를 위해서, 임의의 TryException을 정의하구요

 

 

버튼에서, onClick시에 위에서 만든 TryException을 throw해주겠습니다.

catch에서 이 Exception을 잡아 주었으므로, 

앱은 crash를 일으키지 않을 것 입니다.

 

 

아래와 같이 Crash없이 catch에서 구현한 대로, 토스트 메시지를 보여주고 crash를 일으키지 않습니다.

앱이 Crash가 나지는 않았지만, 개발자는 어떤 상황인지 알고 있어야 겠지요.

 

 

 

2. Catch한 Exception 로그 받기

아래 한줄의 코드면 CrashLytics로 부터 “non-fatal” issue로 알림을 받을 수 있습니다.

예전버전에서는  "Crashlytics.logException(e)"을 사용하였는데,

최근에는 API사용법이 바귀었습니다.

 

 

한가지 주의해야 할 점은,

아래 이미지에서 선택한 것과 같이,

CrashLytics의 대쉬보드에서 non-fatals(심각하지 않음)을 필터링해서 제외하지 않거나,

모든 종류의 이벤트 유형을 다 볼 수 있도록 선택해 주어야 한다는 것 입니다.

 

 

 

또한 내부적으로 CrashLytics는 해당 로그 정보를 모아서 서버로 전송하기 때문에,

실시간이 아닐 수 있다는 점도 고려해야 합니다.

 

3. Custom 로그 받기

3-1. Custom 로그받기

CrashLytics를 통해서 Custom한 로그를 받을 수 있는데요.

아래와 같이 log함수를 사용해 주면 됩니다.

 

 

광고

 

3-2. 키밸류값으로 로그 받기

아래와 같이 키밸류값으로 받아올 수도 있습니다.

 

 

4. 유저 Log받기

아래와 같이 CrashReport에 유저명을 설정해 줄수도 있습니다.

로그마다 설정할 필요없이 Application.class에서 설정해주면 리포트에 유저관련정보가 추가되겠습니다.

 

 

그럼 나중에 Crashlytics리포트에서 해당 유저에게 발생한 Exception들을 모아서 볼 수 있구요.

그것이 어떤 특정한 액션에 의한 것인지, 로그를 통해서 유추할수도 있을 것 입니다.

 

이외에도 CrashLytics를 사용해보면 정말 유용한 점들이 많은데요.

네트워크와 관련해서 catch한 Exception 같은 경우, 유용한 정보를 놓치지 않고 얻을 수 있어서 더욱 좋습니다.

 

728x90

댓글