Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- mac
- Realm
- darkmode
- github
- Swift
- Firebase
- Notification
- rxswift
- IOS
- 한글
- 개발자
- window
- iOS16
- Python
- Xcode
- Code
- error
- MacOS
- stack
- appstore
- SwiftUI
- FLUTTER
- 웹뷰
- JPA
- UIButton
- Session
- Git
- Apple
- view
- Archive
Archives
- Today
- Total
EEYatHo 앱 깎는 이야기
Crashlytics 본문
반응형
- Crashlytics는 데이터를 90일까지만 유지 (무료인데 이정도면 감사합니다)
- Crashlytics는 앱을 재실행 할 때, 디스크에 저장되어 있던 record들을 전송함.
- Crashlytics 에서 유저의 기준
- 앱을 개별적으로 설치한 것
- 여러 기기에 앱을 설치한 사람이 있다면, Crashlytics는 각 설치를 다른 사용자로 계산
- 세션의 기준
- 유저가 앱에 참여하는 연속적인 기간
- 앱이 새로 켜질 때 새 세션 시작 (콜드 스타트)
- 최소 30분의 백그라운드 작동 후 포그라운드 상태가 될 때도 새 세션이 시작
- 커스텀 key
- record 발생시, 키값들을 함께 기록 (record의 “키” 탭에 있음)
- NSDictionary
- 64개의 키-값 쌍 지원. 개당 최대 1KB
- 특정 record를 검토할 때, 커스텀 키를 함께 볼 수 있기에 앱의 구체적인 상태를 확인하게 해줌
- record들을 커스텀 키로 필터링할 수도 있음
- ex) language: ko, network: wifi
- 커스텀 log
- record 발생시, 로그들을 함께 기록 (record의 “로그 및 탐색경로” 탭에 있음)
- 로그들 갯수 제한x, 총 크기를 64KB로 제한. 크기 초과하면 가장 오래된 log를 삭제
- 특정 record를 검토할 때, 로그들을 함께 볼 수 있기에 record까지 어떤 과정이 있었는지 확인하게 해줌
- log는 세션별로 관리됨. 앱이 종료된 후 다시 시작되면 이전 로그는 남아 있지 않음.
- 커스텀 record는 log를 삭제 시키지 않음, 커스텀 record로 인해 로그가 꼬일 걱정은 안해도 됨. (로그1개 → 비충돌record → 로그2개 → record 시, 로그 3개가 보인다는 뜻)
- ex) 네트워크 송수신, 화면 이동, 유저 액션 (버튼탭, 텍스트 입력 등), 타사 SDK api, 버그나 CS가 많이 발생하는 부분 / 크리티컬한 부분 (splash, 토큰 관리 등)
- 사용자 식별자
- 익명으로 유저들을 구별할 수 있는 기능 제공 (record의 “데이터” 탭에 있음)
- 식별자로 해당 유저가 어떤 record들을 발생시켰는지 검색 가능
- 커스텀 record (심각하지 않은 예외 보고)
- 앱 크래시 외에도 커스텀한 record를 기록할 수 있음
- Crashlytics는 세션별로 8개까지의 record만 저장. 한 세션에서 9개 이상이 발생하면, 이전 예외가 삭제됨.
- record를 남발할 경우, 중요한 예외들이 보이지 않을 수 있으니 꼭 필요한 것에만 record 할 것
- 커스텀 record 중 NSError를 사용할 경우, error의 domain과 code로 그룹화 됨.
- domain과 code가 같으면 같은 record로 그룹화 됨.
- NSError의 userInfo는 키-값 쌍으로 전환되어 “키”탭에서 확인 가능
- 타임스탬프, userID 등을 domain이나 code에 넣어서 record의 카디널리티가 커질 경우, Crashlytics에서 오류 보고를 제한해야 할 수도 있음. 이러한 값들은 error의 userInfo에 넣을 것.
- 커스텀 record는 삭제될 수 있음
- Crashlytics는 세션별로 8개까지의 record만 저장. 한 세션에서 9개 이상이 발생하면, 이전 예외가 삭제됨.
- record를 남발할 경우, 중요한 예외들이 보이지 않을 수 있으니 꼭 필요한 것에만 record 할 것
- Crashlytics는 앱을 재실행 할 때, 디스크에 저장되어 있던 record들을 전송하며, 디바이스의 저장 공간을 과하게 사용하지 않기 위해 디스크 할당 공간을 제한함.
- record를 전송하지 못한채로, 커스텀 record들이 쌓이면, 오래된 record가 삭제될 수 있음
- Crashlytics는 세션별로 8개까지의 record만 저장. 한 세션에서 9개 이상이 발생하면, 이전 예외가 삭제됨.
- ex) 중요한 부분에 예상치 못한 SideEffect로 인해 오류가 발생할 경우, 예상치 못한 API 에러, 타사 SDK 에러,
- record의 그룹화
- 비정상 종료는 스택 트레이스 분석을 통해 그룹화 됨
- 커스텀 record 중 NSError를 사용하는 심각하지 않은 예외는 error의 domain과 code로 그룹화 됨.
- 디버그시 발생하지 않는 버그를 고치는데 큰 도움을 줌
- 앱이 백그라운드를 거쳐서 실행되는 경우, 디버그로 실행하면 발생하지 않았음;
- 모니터링을 통해..
- 오류를 추척할 수 있는 데이터 수집으로 든든함을 느낌
- 특정 기기와 특정 OS버전에 대한 에러를 발견할 수 있음
- ref
- https://firebase.google.com/docs/crashlytics/customize-crash-reports?_gl=1*brt742*_up*MQ.._gaMTU0MDc0MjY3Ny4xNzIxMTA3Mzkw*_ga_CW55HF8NVT*MTcyMTEwNzM5MC4xLjAuMTcyMTEwODI0OC4wLjAuMA..&platform=ios&hl=ko#swift_6
- https://tech.kakaopay.com/post/frontend-sentry-monitoring/#언제-어떤-오류를-쌓는-것이-좋을까요
- https://firebase.google.com/docs/crashlytics/crash-free-metrics?hl=ko
'Monitoring' 카테고리의 다른 글
Crashlytics ) __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__, pb_check_proto3_default_value (0) | 2024.08.30 |
---|---|
Crashlytics ) objectdestroy.2Tm (1) | 2024.07.22 |
Comments