利用 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_CLASSES
與 LOGGING
設定之中,例如以下的設定:
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 的 官方文件 。