[sentry] sentry란? #1

1 분 소요

👩🏻‍💻 Sentry?

아마 프로젝트 로깅을 생각하면 가장 많이 적용되는 것이 google analytics일 것이다. 그렇다면 sentry란 무엇이고, 익숙한 google analytics 대신 sentry를 적용할 때 얻을 수 있는 이점을 무엇일까??

우선 sentry란 무엇일까?

Take action on broken lines of code, crashes, and busted API calls with the only developer-first app monitoring platform built to give you answers - not clues.

sentry welcom 페이지에 적혀있는 문장이다. 이 문장에서 핵심은 take actiongive you answers - not clues이라 생각한다.

단순 로깅의 경우, 어디서 crash/error가 났는지를 log를 통해 확인할 수 있다. 하지만 해당 문제가 어디서 발생했는지와 같은 정확한 답을 얻기 위해서 개발자가 앱을 다시 빌드해봐야 한다.

하지만 sentry를 사용한다면 에러가 발생한 코드 위치와 같은 추가적인 정보를 얻을 수 있기 때문에 에러를 추적하기에 편리해진다! 또한, 그 외에도 센트리에서 제공하는 기능은 정말 다양하다. (에러 모니터링, 성능 테스트, 코드 커버리지…) 이러한 기능들을 잘 활용한다면 앱을 유지보수 하는 데 유용하게 활용될 수 있을 것 같다!


👩🏻‍💻 프로젝트에 sentry 달기

  1. sentry 홈페이지 회원가입 / 로그인

  2. 프로젝트 생성 진행

  3. configure android sdk

    • sentry android sdk 추가 공식 홈페이지에서는 plugin을 설정하는 것으로 나와 있다. 하지만 나의 경우, version catelog를 통해 plugin을 설정하는 데 계속해서 오류가 발생해 sentry android sdk를 추가해주었다.
       dependencies {
         implementation(libs.sentry)
       }
    
  • android manifest 설정 android manifest에 sentry dsn을 비롯한 sentry를 통해 사용할 다양한 product를 설정해주어야 한다.

    여기서 dsn의 경우, 노출을 하면 안되므로 local property에 값을 저장하고 이를 사용하는 방식으로 진행했다.

    1. local.properties에 값 설정
      SENTRY_DSN=....
    
    1. build.gradle에서 manifestHolders 설정해주기
      android {
        ...
    
        defaultConfig {
            ...
    
            manifestPlaceholders["SENTRY_DSN"] = gradleLocalProperties(rootDir).getProperty("SENTRY_DSN")
        }
        ...
      }
    
    
    1. 설정한 local property 가져다 쓰기
    
                  <category android:name="android.intent.category.LAUNCHER" />
              </intent-filter>
          </activity>
    
          <!-- sentry setting -->
          <meta-data android:name="io.sentry.dsn" android:value="${SENTRY_DSN}" />
    
  1. test하기 MainActivity에서 testing capture를 진행해보았다!!
  ...
      override fun onResume() {
        Sentry.captureMessage("testing SDK setup")
        ...
      }

👩🏻‍💻 결과

testing capture가 잘 들어온 것을 확인할 수 있다. 추후 앱을 배포하게 된다면 performance, code coverage 등 다양한 기능을 활용해보아야겠다!

  • 추가: 안드로이드 proguard를 사용하여 코드 축소/난독화를 진행하고 있다면 이에 대해서도 sentry 관련 설정이 필요하다. 이 내용에 대해서는 다음 게시글에 정리해보도록 하겠다!

📃참고

댓글남기기