日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

laravel 控制器中使用中间件_在 Laravel 中使用 Slack 进行异常通知

發(fā)布時(shí)間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 laravel 控制器中使用中间件_在 Laravel 中使用 Slack 进行异常通知 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

php中文網(wǎng)最新課程

每日17點(diǎn)準(zhǔn)時(shí)技術(shù)干貨分享

異常處理是軟件開發(fā)過程中無法逃避的問題。對(duì)于一套設(shè)計(jì)良好代碼高效的程序,出現(xiàn)異常的可能性會(huì)比較低,但這并不意味著不會(huì)出現(xiàn)異常,有些異常甚至?xí)饑?yán)重的后果,所以如何及時(shí)的發(fā)現(xiàn)程序中的異常并處理它便顯得十分重要了。

通常,我們可以依靠用戶反饋、經(jīng)常查看程序日志來發(fā)現(xiàn)程序存在的問題。

但這要么不可靠要么不及時(shí),所以下面我們介紹一種比較有效的做法--使用 Slack 通知程序跑出的異常信息。

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

1.安裝 maknz/slack-laravel 包

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

2.配置

安裝完成后使用 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 ,二者并不是必須的

3.調(diào)整 AppExceptionsHandler 類的 report 方法,實(shí)現(xiàn) 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);}

對(duì)于一些可能頻繁出現(xiàn)但又不致命的異常,例如404 NotFoundHttpException,我們可能并不想讓程序通知它。

為此,我們只需要在 Aop\Exceptions\Handler 類里的 $dontReort 屬性中加入指定的異常的類型就可以了。

protected $dontReport = [ NotFoundHttpException::class, // ...];

示例中展示的是對(duì)指定的頻道(channel)發(fā)送信息,當(dāng)然你還可以向指定的人發(fā)送,或者其它更復(fù)雜的用法。

不過要注意指定的用戶名和頻道是自己 slack 團(tuán)隊(duì)中已經(jīng)存在的,不然會(huì)出錯(cuò)。

這樣,當(dāng)程序中出現(xiàn)異常時(shí),運(yùn)維能在第一時(shí)間收到相關(guān)的通知信息,方便及時(shí)處理了。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的laravel 控制器中使用中间件_在 Laravel 中使用 Slack 进行异常通知的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。