--- title: 使用 Sentry 追蹤 APP event and error tags: iOS description: 2019/11/04 --- # 使用 Sentry 追蹤 APP event and error [TOC] Sentry iOS 的 Document 在[這裡](https://docs.sentry.io/clients/cocoa/?_ga=2.228690591.2047469141.1572502794-325005730.1572406972) ## Open a new project 按著網頁上的步驟選擇平台和輸入 project 名字即可生成新的 project  ## Configuration Project 生成後會拿到一個該 project的 DSN(Data Source Name)。 按著[文件](https://docs.sentry.io/clients/cocoa/?_ga=2.199317038.1417862060.1572835361-325005730.1572406972)的步驟安裝 SDK 和在 APPDelegate 完成 configuration 即可使用 Sentry 紀錄 APP event. ## Event Sentry 可以自行紀錄 APP 中的事件,類似 Firebase Analytics 的 log event 功能 用法:先創建一個 event 再用 framework 中的 Client singleton send event ``` swift // init 並指定 event 的類型 let event = Event(level: .debug) // 客製化設定 event.message = "Test Message" // 使用 Client send event Client.shared?.send(event: event) { (error) in // Optional callback after event has been sent } ```  ### Event 的設定 #### 類型 Event 的類型有五種,可自行設定 event 的類型  不同類型的 event 在 dashboard 由不同顏色的標籤顯示:  #### message Event 的 message 會是 dashboard 上的標題  #### extra 可以使用 dictionary 在 event 的 extra 中帶額外的資訊 ``` let event = Event(level: .info) event.message = EVENT_DISABLE_GRAB_ORDER event.extra = ["extraInfo": "fdfdffdffjffhjhjfhdfjfksjf;sjffhkdfjsdjkdjs;kdfjkfjksdljkfjkdldjfkjfklsjfkldjfkldjfkdjflskdjfsklfjsklfjsjfkljfdkfjdkjdflskjf;lsdlfl;sfjdkfjkldjf;dljfdkfljdklfjklj;sdjf;kja;jfkdlj;slkdfjioe;wefkjkldfjds;kf;sjfkldfjsdklfjdklfjdl;fl;sdf;skfjkds;fjkd;lkfjfdfdffdffjffhjhjfhdfjfksjf;sjffhkdfjsdjkdjs;kdfjkfjksdljkfjkdldjfkjfklsjfkldjfkldjfkdjflskdjfsklfjsklfjsjfkljfdkfjdkjdflskjf;lsdlfl;sfjdkfjkldjf;dljfdkfsdljkfjkdldjfkjfklsjfkldjfkldjfkdjflskdjfsklfjsklfjsjfkljfdkfjdkjdflskjf;lsdlfl;sfjdkfjkldjf;dljfdkfljdklfjklj;sdjf;kja;jfkdlj;slkdfjioe;wefkjkldfjds;kf;sjfkldfjsdklfjdklfjdl;fl;sdf;skfjkds;fjkd;lkfjfdfdffdffjffhjhjfhdfjfksjf;sjffhkdfjsdjkdjs;kdfjkfjksdljkfjkdldjfkjfklsjfkldjfkldjfkdjflskdjfsklfjsklfjsjfkljfdkfjdkjdflskjf;lsdlfl;sfjdkfjkldjf;dljfdkfljdklfjklj;sdjf;kja;jfkdlj;slkdfjioe;wefkjkldfjds;kf;sjfkldfjsdklfjdklfjdl;fl;sdf;skfjkds;fjkd;lkfj55555555555555556666666666"] Client.shared?.send(event: event) ```   ### 檢視 event 的資訊 Event 送出後幾秒內你就會收到 email 和可以在 dashboard 檢視相關資料 按進出即可檢視相關資料:  Event 的頁面(進去後會顯示最新一筆資料):  按 Events 即可檢視單筆 event 資料列表:  每筆資料會顯示 User、Device、APP、OS 和 SDK 資料:      ### Fatal error event Fatal error event 會自動紀錄  event 中會有提供 debug 的資訊:    ## 設定 User Firebase Analytics 可以用 `Analytics.setU serID(id)` 來設定 user Sentry 也有類似功能,若無設定 User 資訊只會顯示用戶 IP address 用法是在 configure 以後設定 Client 中的 user: ``` let user = User(userId: id) user.username = "natalie" Client.shared?.user = user ```   ## 設定其他資訊 可按自己的需求設定其他資訊 用法也是更改 Client 的設定: ``` Client.shared?.tags = ["iphone": "true"] Client.shared?.extra = [ "my_key": 1, "some_other_value": "foo bar" ] Client.shared?.releaseName = "release" Client.shared?.dist = "dist" Client.shared?.environment = "production" ``` 設定了之後,在 `Issues > EVENT` 可以看到設定的資訊:  Client 中所設定的 extra 資訊會在每一筆 event 中帶入:   #### dist  ## Breadcrumbs Sentry 提供可以追蹤用戶的動作的功能,一般會追蹤 viewDidAppear 和按鈕事件, 開啓功能後可在 event page 看到該 event user 所做的事件, 預設最多是50宗事件,也可以自行設定: `Client.shared?.breadcrumbs.maxBreadcrumbs = 100`  也可自定義 breadcrumbs: `Client.shared?.breadcrumbs.add(Breadcrumb(level: .info, category: "test"))` 這功能預設是沒有開啓,若要開啓也是更改 Client 的設定: ``` Client.shared?.enableAutomaticBreadcrumbTracking() ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up