目錄
- 概述
- 安裝 maknz/slack-laravel 包
- 配置
- 調(diào)整 AppExceptionsHandler 類的 report 方法
概述
通常,我們可以依靠用戶反饋、經(jīng)常查看程序日志來發(fā)現(xiàn)程序存在的問題。但這要么不可靠要么不及時,所以下面我們介紹一種比較有效的做法--使用 Slack 通知程序跑出的異常信息。
Slack 是一款即時通信軟件,類似于 QQ,它提供開放的 API,可以調(diào)用它向自己團(tuán)隊中指定的個人或者頻道(Channel)發(fā)送消息,因此用它來進(jìn)行異常通知是再合適不過的。
安裝 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=//消息默認(rèn)接收頻道
SLACK_USERNAME//消息默認(rèn)接收人
> 當(dāng)然,也可以直接直接在 config\slack.php 對應(yīng)配置的默認(rèn)值而不使用 .env,但并不推薦這樣做。
> 根據(jù)實際需要設(shè)置 SLACK_CHANNEL 和 SLACK_USERNAME ,二者并不是必須的
調(diào)整 AppExceptionsHandler 類的 report 方法
實現(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);
}
對于一些可能頻繁出現(xiàn)但又不致命的異常,例如404 NotFoundHttpException,我們可能并不想讓程序通知它。為此,我們只需要在 Aop\Exceptions\Handler 類里的 $dontReort 屬性中加入指定的異常的類型就可以了。
protected $dontReport = [
NotFoundHttpException::class,
// ...
];
示例中展示的是對指定的頻道(channel)發(fā)送信息,當(dāng)然你還可以向指定的人發(fā)送,或者其它更復(fù)雜的用法。不過要注意指定的用戶名和頻道是自己 slack 團(tuán)隊中已經(jīng)存在的,不然會出錯。
這樣,當(dāng)程序中出現(xiàn)異常時,運(yùn)維能在第一時間收到相關(guān)的通知信息,方便及時處理了。
以上就是淺談Laravel中使用Slack進(jìn)行異常通知的詳細(xì)內(nèi)容,更多關(guān)于Laravel中使用Slack進(jìn)行異常通知的資料請關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- 如何用Laravel包含你自己的幫助函數(shù)
- 詳解Laravel框架的依賴注入功能
- php+laravel 掃碼二維碼簽到功能
- laravel的數(shù)據(jù)表填充器使用詳解
- laravel ajax curd 搜索登錄判斷功能的實現(xiàn)
- Laravel中Kafka的使用詳解
- laravel使用redis隊列實例講解
- Laravel的加密解密與哈希實例講解
- Laravel中10個有用的用法小結(jié)
- 分析五個Laravel Dusk的使用技巧