淺談Laravel中使用Slack進(jìn)行異常通知
概述
通常,我們可以依靠用戶反饋、經(jīng)常查看程序日志來(lái)發(fā)現(xiàn)程序存在的問(wèn)題。但這要么不可靠要么不及時(shí),所以下面我們介紹一種比較有效的做法--使用 Slack 通知程序跑出的異常信息。
Slack 是一款即時(shí)通信軟件,類似于 QQ,它提供開(kāi)放的 API,可以調(diào)用它向自己團(tuán)隊(duì)中指定的個(gè)人或者頻道(Channel)發(fā)送消息,因此用它來(lái)進(jìn)行異常通知是再合適不過(guò)的。
安裝 maknz/slack-laravel 包
具體的安裝方法請(qǐng)參考 Github 上的 [readme](https://github.com/maknz/slack-laravel)。
配置
安裝完成后使用 php artisan vendor:publish 生成 config\slack.php 配置文件,然后在.env文件中添加如下三項(xiàng)配置值.
SLACK_ENDPOINT=//slack 終端,即 slack 接口地址
SLACK_CHANNEL=//消息默認(rèn)接收頻道
SLACK_USERNAME//消息默認(rèn)接收人
> 當(dāng)然,也可以直接直接在 config\slack.php 對(duì)應(yīng)配置的默認(rèn)值而不使用 .env,但并不推薦這樣做。
> 根據(jù)實(shí)際需要設(shè)置 SLACK_CHANNEL 和 SLACK_USERNAME ,二者并不是必須的
調(diào)整 AppExceptionsHandler 類的 report 方法
實(shí)現(xiàn) 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); }
對(duì)于一些可能頻繁出現(xiàn)但又不致命的異常,例如404 NotFoundHttpException,我們可能并不想讓程序通知它。為此,我們只需要在 Aop\Exceptions\Handler 類里的 $dontReort 屬性中加入指定的異常的類型就可以了。
protected $dontReport = [ NotFoundHttpException::class, // ... ];
示例中展示的是對(duì)指定的頻道(channel)發(fā)送信息,當(dāng)然你還可以向指定的人發(fā)送,或者其它更復(fù)雜的用法。不過(guò)要注意指定的用戶名和頻道是自己 slack 團(tuán)隊(duì)中已經(jīng)存在的,不然會(huì)出錯(cuò)。
這樣,當(dāng)程序中出現(xiàn)異常時(shí),運(yùn)維能在第一時(shí)間收到相關(guān)的通知信息,方便及時(shí)處理了。
以上就是淺談Laravel中使用Slack進(jìn)行異常通知的詳細(xì)內(nèi)容,更多關(guān)于Laravel中使用Slack進(jìn)行異常通知的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PHP實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能,結(jié)合實(shí)例形式分析了php基于session對(duì)象計(jì)算與統(tǒng)計(jì)在線人數(shù)的相關(guān)操作技巧,需要的朋友可以參考下2016-10-10php實(shí)現(xiàn)子字符串位置相互對(duì)調(diào)互換的方法
這篇文章主要介紹了php實(shí)現(xiàn)子字符串位置相互對(duì)調(diào)互換的方法,可實(shí)現(xiàn)簡(jiǎn)單字符串中兩個(gè)子字符串互換的功能,涉及php字符串運(yùn)算與插入、替換等操作的相關(guān)技巧,需要的朋友可以參考下2016-06-06PHP將回調(diào)函數(shù)作用到給定數(shù)組單元的方法
這篇文章主要介紹了PHP將回調(diào)函數(shù)作用到給定數(shù)組單元的方法,是十分重要的一種應(yīng)用,需要的朋友可以參考下2014-08-08PHP中單引號(hào)與雙引號(hào)的區(qū)別分析
在PHP中,我們可以使用單引號(hào)或者雙引號(hào)來(lái)表示字符串。不過(guò)我們作為開(kāi)發(fā)者,應(yīng)該了解其中的區(qū)別。單引號(hào)與雙引號(hào)對(duì)于定義字符一個(gè)是可以解析變量一個(gè)是會(huì)把變量直接輸出來(lái),同時(shí)單引號(hào)與雙引號(hào)在字符處理上單引號(hào)要優(yōu)與雙引號(hào)2014-08-08php通過(guò)header發(fā)送自定義數(shù)據(jù)方法
下面小編就為大家分享一篇php通過(guò)header發(fā)送自定義數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01