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 的 官方文件

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

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

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