中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel中使用Slack進行異常通知的方法

發布時間:2020-12-18 11:37:44 來源:億速云 閱讀:171 作者:小新 欄目:編程語言

小編給大家分享一下Laravel中使用Slack進行異常通知的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

異常處理是軟件開發過程中無法逃避的問題。對于一套設計良好代碼高效的程序,出現異常的可能性會比較低,但這并不意味著不會出現異常,有些異常甚至會引起嚴重的后果,所以如何及時的發現程序中的異常并處理它便顯得十分重要了。

通常,我們可以依靠用戶反饋、經常查看程序日志來發現程序存在的問題。但這要么不可靠要么不及時,所以下面我們介紹一種比較有效的做法--使用 Slack 通知程序跑出的異常信息。

Slack 是一款即時通信軟件,類似于 QQ,它提供開放的 API,可以調用它向自己團隊中指定的個人或者頻道(Channel)發送消息,因此用它來進行異常通知是再合適不過的。

1.安裝 maknz/slack-laravel 包

具體的安裝方法請參考 Github 上的 [readme](https://github.com/maknz/slack-laravel)。

2.配置

安裝完成后使用 php artisan vendor:publish 生成 config\slack.php 配置文件,然后在.env文件中添加如下三項配置值.
```
SLACK_ENDPOINT=//slack 終端,即 slack 接口地址
SLACK_CHANNEL=//消息默認接收頻道
SLACK_USERNAME//消息默認接收人
```
> 當然,也可以直接直接在 config\slack.php 對應配置的默認值而不使用 .env,但并不推薦這樣做。
> 根據實際需要設置 SLACK_CHANNEL 和 SLACK_USERNAME ,二者并不是必須的

3.調整 AppExceptionsHandler 類的 report 方法,實現 Slack 通知異常信息的邏輯。代碼如下:

/**
 * Report or log an exception.
 *
 * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
 *
 * @param  \Exception  $e
 * @return void
 */
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進行異常通知的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通榆县| 昌黎县| 银川市| 玉山县| 通化市| 乐昌市| 紫阳县| 洪江市| 南宫市| 澄迈县| 同仁县| 双桥区| 桦南县| 昌黎县| 洛扎县| 池州市| 肥乡县| 高要市| 宜兰市| 长泰县| 合川市| 高雄市| 安义县| 通山县| 曲靖市| 西吉县| 岳西县| 龙门县| 延川县| 南皮县| 连云港市| 隆德县| 内丘县| 涞源县| 汾阳市| 兰西县| 吴桥县| 陆良县| 周宁县| 台北县| 安远县|