以前咱們說過利用「釘釘羣」來通知 Laravel 的異常,但咱們發現釘釘的做用更多的是通知咱們有異常了,要跟進異常問題了。php
咱們仍是須要有一個地方,很直觀的來彙總異常和分析異常,總不能每次出現問題咱們都去服務器上看項目的 Log 吧。nginx
在 Laravel 的文檔說明中,推薦使用 Bugsnag 或 Sentry:laravel
全部異常都由 AppExceptionsHandler 類處理。 這個類包含兩個方法:report 和 render。report 方法用於記錄異常或將其發送到外部服務,如 Bugsnag 或 Sentry。默認狀況下,report 方法只是簡單地將異常傳遞給記錄異常的基類。你能夠根據須要來記錄異常。摘自:https://laravel-china.org/docs/laravel/5.5/errors/1303git
今天咱們推薦 getsentry/onpremise
用於搭建 Sentry 工具,收集項目異常。github
Stop hoping your users will report errorsOpen-source error tracking that helps developers monitor and fix crashes in real time. Iterate continuously. Boost efficiency. Improve user experience.web
簡言之,Sentry 是一個日誌平臺,主要分爲客戶端和服務端,客戶端嵌入到咱們的應用程序中,當應用出現異常時,就會向服務端發送異常信息,服務端則將信息記錄到數據庫彙總,並提供 web 方式,方便咱們對異常進行查看和分析,避免於咱們須要登陸本身的服務器後臺去查看生硬的 log 文件。docker
Official bootstrap for running your own Sentry with Docker.
利用 docker 安裝工具,是最好的方式,由於若是以爲不合適,直接 rm,不會影響到咱們的服務器環境。bootstrap
安裝bash
按照 README 說明的來就行:
// 1. 下載 docker-compose 安裝文件 git clone https://github.com/getsentry/onpremise.git // 2. 建立 data 文件夾,存儲咱們的項目文件和數據庫 mkdir -p data/{sentry,postgres} // 3. 建立 secret-key,並把 key 添加到 docker-compose.yml docker-compose run --rm web config generate-secret-key // 4. 建立數據庫、admin 帳號等 docker-compose run --rm web upgrade // 5. 開啓各個服務,後臺運行 docker-compose up -d // 6. 咱們能夠修改配置文件,或端口等信息
咱們把端口改爲 9999:9000,接着就是利用 nginx 或者其餘服務器工具進行方向代理,配置二級域名,關聯到該端口上。
nginx 配置
配置二級域名反向解析到該 9999 端口上,比較簡單,直接看:
使用 Sentry,主要是建立一個項目,生成一個客戶端密鑰 (DSN)。
建立項目
當 new 一個項目時,你會發現,Sentry 能夠集成的項目語言涵蓋不少,如 C#
、Java
、Node.js
、Laravel
等等
固然,咱們先選擇嘗試使用 Laravel
,建立好後,會出現一篇如何集成到客戶端的說明文檔:
固然也包含了 DSN。
建立好了項目後,接下來就是看看如何集成到客戶端使用了。
Laravel 項目集成
根據文檔提示,咱們一步步操做,安裝插件:
composer require sentry/sentry-laravel
添加代碼,捕獲異常:
public function report(Exception $exception) { if (app()->bound('sentry') && $this->shouldReport($exception)) { app('sentry')->captureException($exception); } parent::report($exception); }
添加配置文件
php artisan vendor:publish --provider="Sentry\SentryLaravel\SentryLaravelServiceProvider"
在 env 配置文件上,添加剛纔建立的 DNS:
SENTRY_LARAVEL_DSN=http://49bafc29701144f9876a1e263205abfe:63af538009094375ba9109d367fbf61b@yoururl/2
利用 Artisan 測試看看:
php artisan sentry:test
test 發送的 event id 和 Sentry 項目中獲取的 event id 一致。
工具的使用就是爲了方便咱們平時開發使用。有了 Sentry,咱們能夠將不一樣項目的異常都放在 Sentry 上去彙總和分析。
不單單 Laravel 項目,其餘的項目如VUE 的,咱們也能夠把異常實時推送到 Sentry 上。
至於如何使用好 Sentry,以及使用 Sentry 提供的 API 等。有待於咱們的實際生成和開發中,須要去不斷熟悉使用了。
之後有時間也會寫寫 Sentry 使用心得。