IT_Programming/Android_Java

[안드로이드 라이브러리] 앱이 크래시가 일어 났을 때 로그를 저장하는 법

JJun ™ 2014. 4. 22. 00:51


  출처: http://creon.tistory.com/m/post/450


 

 

앱이 크래시 오류가 나서 앱이 강제로 종료된 경우에로그를 저장하고 싶은 경우가 있을 것이다.

그럴 때 사용하는 라이브러리가 바로  ACRA (Application Crash Reports for Android ) 라는

라이브러리이다.


다운로드 : https://github.com/ACRA/acra



위에 있는 곳에서 라이브러리를 다운 로드를 받는다.


 

1. 자신이 작업하는 앱의 lib 폴더에 넣는다.

2. 프로젝트 속성에 들어가서 라이브러리를 등록한다. 

3. 먼저, 메니페스트 파일을 열어서   <uses-permission android:name="android.permission.READ_LOGS" /> 퍼미션을 추가한다.


4. 그리고 클래스 파일을 하나 만든다.

   4.1  Application을 상속하는 클래스를 생성한다. 나머지는 예제를 보고 참조


    

4.1 예제 열기

 

 

@ReportsCrashes(formKey = "", 
     //저장할 때 쓰는 것들
     customReportContent = {
     //순서 대로 버전, 버전 이름,  안드로이드 버전, 폰 모델, 커스텀 데이터, 스택 트레이스, 로그켓 메시지
     ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME,
     ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL,
     ReportField.CUSTOM_DATA, ReportField.STACK_TRACE, ReportField.LOGCAT
     }, 
     mode = ReportingInteractionMode.TOAST,   //에러 발생시 토스트 메시지가 나옴
     resToastText = R.string.CrashErrorMessage)  //메시지 내용


class MyApplication extends Application{
    @override
   public void onCreate()
   ACRA.init(this);  //초기화 

   //크래시가 발생시 저장하는 기능
   ACRA.getErrorReporter().setReportSender(new MyReportSender(this));
}

 



5.  메니페스트를 열고 Application 태그 안에 android:name에 전에 만든 Application을 넣는다.

    예) <application android:name="com.exam.MyApplication"

                .... 

                ....

          />


6.  ReportSender 인터페이스를 구현한다.

 

 public class MyReportSender implements ReportSender {
    @Override
    public void send(CrashReportData report) throws ReportSenderException {
             //에러가 발생시 이 메소드를 호출한다.
            //저장 작업을  처리..
    }
}


 



7. 마무리


크래시 로그를 파일로 저장할 수 있을 뿐만 아니라 메일로도 보내거나 자신의 서버로 보내는 기능

또한 만들 수 있다. 그건 구글에 검색을 하면 나오므로 생략한다.