摘要:是一款即時通信軟件,類似于,它提供開放的,可以調用它向自己團隊中指定的個人或者頻道發送消息,因此用它來進行異常通知是再合適不過的。這樣,當程序中出現異常時,運維能在第一時間收到相關的通知信息,方便及時處理了。
異常處理是軟件開發過程中無法逃避的問題。對于一套設計良好代碼高效的程序,出現異常的可能性會比較低,但這并不意味著不會出現異常,有些異常甚至會引起嚴重的后果,所以如何及時的發現程序中的異常并處理它便顯得十分重要了。
通常,我們可以依靠用戶反饋、經常查看程序日志來發現程序存在的問題。但這要么不可靠要么不及時,所以下面我們介紹一種比較有效的做法--使用 Slack 通知程序跑出的異常信息。
Slack 是一款即時通信軟件,類似于 QQ,它提供開放的 API,可以調用它向自己團隊中指定的個人或者頻道(Channel)發送消息,因此用它來進行異常通知是再合適不過的。
安裝 maknz/slack-laravel 包
具體的安裝方法請參考 Github 上的 [readme](https://github.com/maknz/slack-laravel)。
配置
安裝完成后使用 php artisan vendor:publish 生成 configslack.php 配置文件,然后在.env文件中添加如下三項配置值. ``` SLACK_ENDPOINT=//slack 終端,即 slack 接口地址 SLACK_CHANNEL=//消息默認接收頻道 SLACK_USERNAME//消息默認接收人 ``` > 當然,也可以直接直接在 configslack.php 對應配置的默認值而不使用 .env,但并不推薦這樣做。 > 根據實際需要設置 SLACK_CHANNEL 和 SLACK_USERNAME ,二者并不是必須的
調整 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 = " [Error.{$e->getCode()}] {$e->getMessage()}"; $slackMessage.= " [Line.{$e->getLine()}] {$e->getFile()}"; $slackMessage.= " [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,我們可能并不想讓程序通知它。為此,我們只需要在 AopExceptionsHandler 類里的 $dontReort 屬性中加入指定的異常的類型就可以了。
protected $dontReport = [ NotFoundHttpException::class, // ... ];
示例中展示的是對指定的頻道(channel)發送信息,當然你還可以向指定的人發送,或者其它更復雜的用法。不過要注意指定的用戶名和頻道是自己 slack 團隊中已經存在的,不然會出錯。
這樣,當程序中出現異常時,運維能在第一時間收到相關的通知信息,方便及時處理了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/23313.html
摘要:文章轉自視頻教程優雅的應用調試工具新擴展是由和開源的應用的調試工具。計劃任務列出已運行的計劃任務。該封閉函數會被序列化為一個長字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉自:https://laravel-china.org/topics/19013視頻教程:047. 優雅的應用調試工具--laravel/telesco...
摘要:發布于年月,從那時起大約每六個月會發布一次的新版本。將會支持相對較新的來管理項目中的環境文件。棄用和輔助函數所有的和全局輔助函數都已棄用,將在中刪除。將返回更干凈的相同值。和通知和通知已從主項目中刪除,并提取到第三方軟件包中。 showImg(https://segmentfault.com/img/remote/1460000018269419?w=585&h=400); 無論是從零...
摘要:事件類保存在目錄中,而這些事件的的監聽器則被保存在目錄下。這些目錄只有當你使用命令來生成事件和監聽器時才會被自動創建。事件機制是一種很好的應用解耦方式,因為一個事件可以擁有多個互不依賴的監聽器。參考鏈接事件系統隊列原文地址 Laravel 的事件提供了一個簡單的觀察者實現,能夠訂閱和監聽應用中發生的各種事件。事件類保存在 app/Events 目錄中,而這些事件的的監聽器則被保存在 a...
摘要:提供了一種全新的發送通知的方式。個人理解是可以基于某事件操作觸發一系列的通知任務,而通知方式由通知渠道接管,這樣使得通知或推送邏輯更抽象,更易于管理和重構。在之前,我是利用的來完成這一系列通知。使用的配置文件還是原來的,無需重新配置。 Laravel Notification Laravel 5.3 提供了一種全新的發送通知的方式:Notification 。個人理解是可以基于某事件(...
摘要:本文經授權轉自社區說明發布臨近,大體構建已經完成,文檔整理完成后即可發布。附帶了一個響應式郵件模板,通知類中唯一需要做的就是像下面這樣發送消息錯誤處理是一個可選的擴展包,提供了完整可用的服務。 本文經授權轉自 PHPHub 社區 說明 Laravel 5.3 發布臨近,大體構建已經完成,文檔整理完成后即可發布。 下面是對 Laravel 5.3 新特性的整理,不完整列表。 1、全文搜...
閱讀 3309·2021-09-08 09:45
閱讀 1260·2019-08-30 15:53
閱讀 1532·2019-08-30 14:12
閱讀 987·2019-08-29 17:01
閱讀 2578·2019-08-29 15:35
閱讀 401·2019-08-29 13:09
閱讀 1978·2019-08-29 12:32
閱讀 3089·2019-08-26 18:37