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
- 애니메이션
- ios
- Observable
- Human interface guide
- rxswift
- Xcode
- Refactoring
- ribs
- SWIFT
- 리펙터링
- uiscrollview
- Clean Code
- map
- UITextView
- combine
- 스위프트
- collectionview
- RxCocoa
- swift documentation
- UICollectionView
- HIG
- swiftUI
- 리펙토링
- MVVM
- Protocol
- 클린 코드
- clean architecture
- 리팩토링
- tableView
- uitableview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Firebase Crashlytics 로그 사용 방법, Crashlytics.crashlytics().log(format:arguments:) 본문
iOS 응용 (swift)
[iOS - swift] Firebase Crashlytics 로그 사용 방법, Crashlytics.crashlytics().log(format:arguments:)
jake-kim 2023. 4. 24. 01:37Crashlytics 로그란?
- Firebase에서 크래시 전송 설정을 하면 (Firebase Crashlytics와 dsym 파일 전송), 크래시가 발생한 경우 크래시를 정보를 파이어 베이스에 전송
- 기본적인 크래시 정보를 Crashlytics에 보내지만, 크래시가 발생하기 전의 특정한 정보를 알고싶은 경우 로그 전송이 가능
Crashlytics 설정
- 기본적인 Crashlytics 설정은 이전 포스팅 글 참고
- dsymbol은 Release환경에서만 보내도록 설정했으므로 테스트를 위해 Xcode 스킴에서 Build Configuration을 Release로 변경하고 Debug executable 체크를 해제
- 아래와 같은 코드를 준비하고 크래시를 발생시켰을때 파이어베이스에 crash 정보가 나왔으면 준비 완료
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(type: .roundedRect)
button.frame = CGRect(x: 20, y: 50, width: 100, height: 30)
button.setTitle("Crash", for: [])
button.addTarget(self, action: #selector(crashButtonTapped(_:)), for: .touchUpInside)
view.addSubview(button)
}
@IBAction func crashButtonTapped(_ sender: AnyObject) {
let numbers = [0]
let _ = numbers[1]
}
}
Crashlytics 로그 사용 방법
- 따로 크래시 로그를 보내지 않으면 아래처럼 스택 추적만 확인이 가능
- 크래시 로그는 위 사진에서 스택추적 오른쪽 탭에 로그부분에 정보를 넘기는 것
- 로그를 전송하려면 Crashlytics.crashlytics().log(format:arguments:)를 사용
- 주의할점: arguments타입도 CustomStringConvertible 속성을 따르지 않으면 런타임 시점에 크래시가 발생 (debug모드에서는 크래시 발생하지 않으므로 매우 주의)
- String은 CustomStringConvertible을 준수하고 있으므로 인덱스 정보를 String 타입으로 변환하여 전송
@IBAction func crashButtonTapped(_ sender: AnyObject) {
let ind1 = 0
let ind2 = 1
// arguments 타입
Crashlytics.crashlytics().log(format: "index1: %@, index2: %@", arguments: getVaList([ind1, ind2].map(String.init)))
let numbers = [0]
let _ = numbers[1]
}
- 다시 크래시를 발생시키고 콘솔을 확인해보면 전송한 인덱스 관련 로그도 확인이 가능
* 전체 코드: https://github.com/JK0369/ExCrashLog
* 참고
https://firebase.google.com/docs/crashlytics/customize-crash-reports?hl=ko&platform=ios
'iOS 응용 (swift)' 카테고리의 다른 글
Comments