用 Sentry 來記錄你的網站錯誤

sentry

如果你自認為你寫程式不會有錯請跳過這篇!

讓我們面對現實吧!就算你寫了再多的 Unit Test、Functional Test 還有一堆蝦米碗糕測試,在程式實際上線的時候還是多多少少會遇到一些當初沒有測到的問題。運氣好的時候,你可以在自己使用的時候發現問題,然後順利的把這個 bug 解掉。運氣稍差一點,會有認識的人告訴你程式出錯了,然後你要想辦法重現他出錯的狀況。不過通常你會遇到的是最糟糕的狀況,只有當使用者用你的程式的時候才會碰到問題,然後不知道發生什麼事情的使用者看到空白的畫面然後關掉你的網站。

如果你覺得你有這些問題,那麼 Sentry 可能會是你的救星。Sentry 是由前 Disqus 的工程師 David Cramer 寫出的 service,原本一開始是做 Disqus 內部的 Exception Logging 之用,後來 Sentry 越來越成熟,也支援了 Ruby、PHP、JavaScript、iOS 等等程式語言。而原本這個 Open Source 的 Project,也獨立發展成為一個 Service。

安裝

如果你不想自己處理 hosting 的問題,那麼最好的方法就是直接去 Sentry 的網站花錢了事,只要一個月付上 20 元美金,就可以讓你每天記錄多達 7500 個 Exception。如果你不想花這些錢,那麼也可以看看 Sentry 的說明文件 自己試著架架看。如果你也不想架在自己的 Server 上面,那麼你還有 Heroku 這個選項!把 Sentry 裝在 Heroku 上面可以參考這份 GitHub Repository 的說明,照著做就好了。

來用看看吧!

這邊我們以 JavaScript 為例子,其他的 Client 可以參考 Sentry 的 Document。再登入之後,應該會看到如下的圖來建立一個新的 Project。這邊,我們記得要把 Platform 的部份選擇 JavaScript。

按下 Save Change 之後,就會告訴你要如何 Config 你的 JavaScript 程式。下面是個例子/p>




基本上你要做的事情很簡單,首先在你要做 Logging 的頁面,載入 raven-js (line 1)。接著設定你的 Server 相關的 URL (line 2)。接下來我們隨便寫一段會有 exception 的 javascript,呼叫一個沒有定義過的 function。如果一切都沒搞錯,那麼應該可以順利的在你的 sentry 頁面當中看到

sentry

這邊我們可以看到有一個 exception 被記錄下來,可以看看詳細內容

sentry

這邊我們可以看到有更詳細的 expcetion 內容還有發生的位置,如果可以的話 sentry 還會把相關的 Stack Trace 給記錄下來,甚至可以很方便的 Replay 某個 request。

小結

這邊為大家大概介紹了一下 Sentry 這個好東西,限於篇幅,這邊介紹的只是 Sentry 的最核心功能,Sentry 還可以跟 E-mail、HipChat 等整合,趕快為你的 service 裝上 Sentry 吧!它將會省去你不少的抓錯時間的!



Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *