淺談Laravel中使用Slack進行異常通知
概述
通常,我們可以依靠用戶反饋、經常查看程序日志來發現程序存在的問題。但這要麼不可靠要麼不及時,所以下面我們介紹一種比較有效的做法–使用 Slack 通知程序跑出的異常信息。
Slack 是一款即時通信軟件,類似於 QQ,它提供開放的 API,可以調用它向自己團隊中指定的個人或者頻道(Channel)發送消息,因此用它來進行異常通知是再合適不過的。
安裝 maknz/slack-laravel 包
具體的安裝方法請參考 Github 上的 [readme](https://github.com/maknz/slack-laravel)。
配置
安裝完成後使用 php artisan vendor:publish 生成 config\slack.php 配置文件,然後在.env文件中添加如下三項配置值.
SLACK_ENDPOINT=//slack 終端,即 slack 接口地址
SLACK_CHANNEL=//消息默認接收頻道
SLACK_USERNAME//消息默認接收人
> 當然,也可以直接直接在 config\slack.php 對應配置的默認值而不使用 .env,但並不推薦這樣做。
> 根據實際需要設置 SLACK_CHANNEL 和 SLACK_USERNAME ,二者並不是必須的
調整 AppExceptionsHandler 類的 report 方法
實現 Slack 通知異常信息的邏輯。代碼如下:
/** * Report or log an exception. * public function report(Exception $e){ if ($this->shouldReport($e)) { $slackMessage = "\n[Error.{$e->getCode()}] {$e->getMessage()}"; $slackMessage.= "\n[Line.{$e->getLine()}] {$e->getFile()}"; $slackMessage.= "\n[Time] ".date('Y-m-d H:i:s'); try { Slack::to(config('slack.channel'))->send($slackMessage); } catch (\Exception $eOther) { \Log::info($slackMessage); } } return parent::report($e); }
對於一些可能頻繁出現但又不致命的異常,例如404 NotFoundHttpException,我們可能並不想讓程序通知它。為此,我們隻需要在 Aop\Exceptions\Handler 類裡的 $dontReort 屬性中加入指定的異常的類型就可以瞭。
protected $dontReport = [ NotFoundHttpException::class, // ... ];
示例中展示的是對指定的頻道(channel)發送信息,當然你還可以向指定的人發送,或者其它更復雜的用法。不過要註意指定的用戶名和頻道是自己 slack 團隊中已經存在的,不然會出錯。
這樣,當程序中出現異常時,運維能在第一時間收到相關的通知信息,方便及時處理瞭。
以上就是淺談Laravel中使用Slack進行異常通知的詳細內容,更多關於Laravel中使用Slack進行異常通知的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- python slack桌面自動化開發工具
- 清除laravel緩存命令代碼實例
- php中laravel調度執行錯誤解決方法
- Laravel快速入門之composer介紹及安裝詳細圖文步驟
- Laravel的加密解密與哈希實例講解