不管做爲新手仍是老手程序員在程序的開發過程當中,代碼運行時不免會拋出異常,並且項目在部署到測試、生產環境後,咱們便不可能像在開發時那樣容易的及時發現處理錯誤了。通常咱們都是在錯誤發生一段時間後,錯誤信息纔會傳遞到開發人員那裏,而後一頓操做查看程序運行的日誌,就熟練使用awk和grep去分析日誌,可是每每咱們會由於日誌中缺乏上下文關係,致使很難分析真正的錯誤是什麼。python
Sentry由此應運而生成爲了解決這個問題的一個很好的工具,設計了諸多特性幫助開發者更快、更方面、更直觀的監控錯誤信息。程序員
隨着不斷的開發應用變得愈來愈複雜,輸出日誌五花八門,有print的,有寫stdout的,有寫stderr的, 有寫logging的,也有自定義xxx.log的。那麼這將致使平臺應用日誌分佈在各個地方,沒法統一管理。並且可能用的還不止一種開發語言,想規範和統一日誌不是一件容易的事。因此這也是咱們爲何使用Sentry的緣由,django
Sentry是一個集中式日誌管理系統。它具有如下優勢:服務器
Sentry目前支持的語言衆多,下面展現一部分:工具
Sentry支持部署到本地服務器,本博文不作過多介紹,可參照官方文檔進行部署:測試
本地部署官方文檔url
對於大所屬我的和小型企業推薦使用Sentry官方提供的雲服務,進行快速搭建屬於本身的錯誤日誌監控系統,只須要去官網進行註冊一個Sentry帳號便可spa
一、註冊新帳號debug
官網地址設計
Sentry免費版可用功能:
若是想享受更多功能和服務能夠看這裏:付費版價格策略
二、安裝SDK
Sentry經過在應用程序運行時中使用SDK來捕獲數據。這些是特定於平臺的,容許Sentry深刻了解您的應用程序的工做方式。
使用pip
如下命令安裝Python SDK :
pip install --upgrade sentry-sdk==0.10.2
三、配置SDK
在Sentry中完成項目設置後,您將得到一個咱們稱之爲DSN或數據源名稱的值。它看起來很像標準URL,但它實際上只是Sentry SDK所需配置的表示。它由幾部分組成,包括協議,公鑰,服務器地址和項目標識符。
在應用程序的設置中儘早導入並初始化Sentry SDK:
import sentry_sdk sentry_sdk.init("https://ae5f2eaff8404dbdb2e0d75f7466449d@sentry.io/個人") # 註冊帳號後在文檔中自動生成
四、捕捉你的第一個異常
您能夠經過在應用程序中插入除以零表達式來致使Python錯誤:
division_by_zero = 1 / 0
在雲監控系統中顯示的錯誤信息:
五、在django中的使用
安裝:sentry-sdk
pip install --upgrade 'sentry-sdk==0.10.2'
要配置SDK,請在settings.py
文件中使用Django集成對其進行初始化:
import sentry_sdk from sentry_sdk.integrations.django import DjangoIntegration sentry_sdk.init( dsn="https://ae5f2eaff8404dbdb2e0d75f7466449d@sentry.io/個人", integrations=[DjangoIntegration()] )
您能夠經過建立觸發錯誤的路由輕鬆驗證Sentry安裝:
from django.urls import path def trigger_error(request): division_by_zero = 1 / 0 urlpatterns = [ path('sentry-debug/', trigger_error), # ... ]
訪問此路由將觸發程序將捕獲的錯誤。
一旦你完成上面的配置,之後系統發生的全部錯誤異常都會被自動記錄到Sentry,經過錯誤日誌監控平臺就能夠看到對應的平常,而且一旦發生異常會發送郵件到你的郵箱,一樣能夠看到異常的錯誤描述信息,更多詳細使用教程你請參照官網文檔。