[sentry] sentry란? #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 action과 give you answers - not clues이라 생각한다.
단순 로깅의 경우, 어디서 crash/error가 났는지를 log를 통해 확인할 수 있다. 하지만 해당 문제가 어디서 발생했는지와 같은 정확한 답을 얻기 위해서 개발자가 앱을 다시 빌드해봐야 한다.
하지만 sentry를 사용한다면 에러가 발생한 코드 위치와 같은 추가적인 정보를 얻을 수 있기 때문에 에러를 추적하기에 편리해진다! 또한, 그 외에도 센트리에서 제공하는 기능은 정말 다양하다. (에러 모니터링, 성능 테스트, 코드 커버리지…) 이러한 기능들을 잘 활용한다면 앱을 유지보수 하는 데 유용하게 활용될 수 있을 것 같다!
👩🏻💻 프로젝트에 sentry 달기
-
sentry 홈페이지 회원가입 / 로그인
-
프로젝트 생성 진행
-
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에 값을 저장하고 이를 사용하는 방식으로 진행했다.
- local.properties에 값 설정
SENTRY_DSN=....
- build.gradle에서 manifestHolders 설정해주기
android { ... defaultConfig { ... manifestPlaceholders["SENTRY_DSN"] = gradleLocalProperties(rootDir).getProperty("SENTRY_DSN") } ... }
- 설정한 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}" />
- test하기 MainActivity에서 testing capture를 진행해보았다!!
...
override fun onResume() {
Sentry.captureMessage("testing SDK setup")
...
}
👩🏻💻 결과
testing capture가 잘 들어온 것을 확인할 수 있다. 추후 앱을 배포하게 된다면 performance, code coverage 등 다양한 기능을 활용해보아야겠다!
- 추가: 안드로이드 proguard를 사용하여 코드 축소/난독화를 진행하고 있다면 이에 대해서도 sentry 관련 설정이 필요하다. 이 내용에 대해서는 다음 게시글에 정리해보도록 하겠다!
댓글남기기