Django 利用 Bugsnag 即時追蹤 Bug 與系統異常

Posted on  Jul 16, 2016  in  Django  by  Amo Chen  ‐ 2 min read

利用 Django 開發 Web application 時可以利用 logging 模組幫忙除錯,但如果是已經上線運作的 Web application 光靠 logging 模組就不夠方便了,畢竟無法時時刻刻都去看日誌檔(log)了解系統狀況,這時候就需要一些方便的服務來幫忙,譬如 Bugsnag

Bugsnag 提供了多種平台的錯誤回報與系統異常即時偵測的功能,能夠將系統中的錯誤與異常整合到該服務中,其中包括 Javascript, Python, Ruby, iOS, Android ,甚至是 Go 都有提供,也可以跟其他服務整合,例如 Slack, HipChat 等等,也有提供免費的使用方案(例如 open source project),對獨立開發者而言是十分佛心的服務。 詳細方案說明

Bugsnag 對於 Python 幾個主流的 Web framework (Django, Flask, Bottle) 都有支援,所以要整合就非常方便。 詳細支援列表

以 Django 為例,就是以下幾項步驟:

申請 Bugsnag 帳號密碼

https://bugsnag.com/user/new

值得注意的是 COMPANY NAME 被列為必填

取得 API Key

登入之後, Bugsnag 會給你一組 API Key ,這組 API Key 接下來設定時會用到。

為 Django Web Application 安裝 bugsnap 套件

接下來為你的 Django web application 安裝 bugsnap 套件

$ pip install bugsnag

在 Django 設定檔中添加 BUGSNAG 設定

這邊主要需要在 settings.py 添加 BUGSNAG 的設定之外,同時得安裝 BUGSNAG 到 MIDDLEWARE_CLASSESLOGGING 設定之中,例如以下的設定:

BUGSNAG = {
    "api_key": "YOUR_API_KEY_HERE",
    "project_root": BASE_DIR,
}


MIDDLEWARE_CLASSES = (
    ...
    "bugsnag.django.middleware.BugsnagMiddleware"
)


LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,

    "root": {
        "level": "ERROR",
        "handlers": ["bugsnag"],
    },

    "handlers": {
        "bugsnag": {
            "level": "INFO",
            "class": "bugsnag.handlers.BugsnagHandler",
        },
    }
}

接下來只要重新載入一次伺服器設定檔就可以了,如果有任何的 error 發生就會在 Bugsnag 的介面看到資訊。

其他

Runtime 時候的變數值預設並不會被回報到 Bugsnag 中,如果需要紀錄 runtime 時的變數值,則需要自己添加,詳細用法可以參閱 Bugsnag 的 官方文件

追蹤新知

看完這篇文章了嗎?還意猶未盡的話,追蹤粉絲專頁吧!

我們每天至少分享 1 篇文章/新聞或者實用的軟體/工具,讓你輕鬆增廣見聞提升專業能力!如果你喜歡我們的文章,或是想了解更多特定主題的教學,歡迎到我們的粉絲專頁按讚、留言讓我們知道。你的鼓勵,是我們的原力!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!