摘要:是一款即時(shí)通信軟件,類似于,它提供開(kāi)放的,可以調(diào)用它向自己團(tuán)隊(duì)中指定的個(gè)人或者頻道發(fā)送消息,因此用它來(lái)進(jìn)行異常通知是再合適不過(guò)的。這樣,當(dāng)程序中出現(xiàn)異常時(shí),運(yùn)維能在第一時(shí)間收到相關(guān)的通知信息,方便及時(shí)處理了。
異常處理是軟件開(kāi)發(fā)過(guò)程中無(wú)法逃避的問(wèn)題。對(duì)于一套設(shè)計(jì)良好代碼高效的程序,出現(xiàn)異常的可能性會(huì)比較低,但這并不意味著不會(huì)出現(xiàn)異常,有些異常甚至?xí)饑?yán)重的后果,所以如何及時(shí)的發(fā)現(xià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 生成 configslack.php 配置文件,然后在.env文件中添加如下三項(xiàng)配置值. ``` SLACK_ENDPOINT=//slack 終端,即 slack 接口地址 SLACK_CHANNEL=//消息默認(rèn)接收頻道 SLACK_USERNAME//消息默認(rèn)接收人 ``` > 當(dāng)然,也可以直接直接在 configslack.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. * * 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); }
對(duì)于一些可能頻繁出現(xiàn)但又不致命的異常,例如404 NotFoundHttpException,我們可能并不想讓程序通知它。為此,我們只需要在 AopExceptionsHandler 類里的 $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í)處理了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/23313.html
摘要:文章轉(zhuǎn)自視頻教程優(yōu)雅的應(yīng)用調(diào)試工具新擴(kuò)展是由和開(kāi)源的應(yīng)用的調(diào)試工具。計(jì)劃任務(wù)列出已運(yùn)行的計(jì)劃任務(wù)。該封閉函數(shù)會(huì)被序列化為一個(gè)長(zhǎng)字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉(zhuǎn)自:https://laravel-china.org/topics/19013視頻教程:047. 優(yōu)雅的應(yīng)用調(diào)試工具--laravel/telesco...
摘要:發(fā)布于年月,從那時(shí)起大約每六個(gè)月會(huì)發(fā)布一次的新版本。將會(huì)支持相對(duì)較新的來(lái)管理項(xiàng)目中的環(huán)境文件。棄用和輔助函數(shù)所有的和全局輔助函數(shù)都已棄用,將在中刪除。將返回更干凈的相同值。和通知和通知已從主項(xiàng)目中刪除,并提取到第三方軟件包中。 showImg(https://segmentfault.com/img/remote/1460000018269419?w=585&h=400); 無(wú)論是從零...
摘要:事件類保存在目錄中,而這些事件的的監(jiān)聽(tīng)器則被保存在目錄下。這些目錄只有當(dāng)你使用命令來(lái)生成事件和監(jiān)聽(tīng)器時(shí)才會(huì)被自動(dòng)創(chuàng)建。事件機(jī)制是一種很好的應(yīng)用解耦方式,因?yàn)橐粋€(gè)事件可以擁有多個(gè)互不依賴的監(jiān)聽(tīng)器。參考鏈接事件系統(tǒng)隊(duì)列原文地址 Laravel 的事件提供了一個(gè)簡(jiǎn)單的觀察者實(shí)現(xiàn),能夠訂閱和監(jiān)聽(tīng)?wèi)?yīng)用中發(fā)生的各種事件。事件類保存在 app/Events 目錄中,而這些事件的的監(jiān)聽(tīng)器則被保存在 a...
摘要:提供了一種全新的發(fā)送通知的方式。個(gè)人理解是可以基于某事件操作觸發(fā)一系列的通知任務(wù),而通知方式由通知渠道接管,這樣使得通知或推送邏輯更抽象,更易于管理和重構(gòu)。在之前,我是利用的來(lái)完成這一系列通知。使用的配置文件還是原來(lái)的,無(wú)需重新配置。 Laravel Notification Laravel 5.3 提供了一種全新的發(fā)送通知的方式:Notification 。個(gè)人理解是可以基于某事件(...
摘要:本文經(jīng)授權(quán)轉(zhuǎn)自社區(qū)說(shuō)明發(fā)布臨近,大體構(gòu)建已經(jīng)完成,文檔整理完成后即可發(fā)布。附帶了一個(gè)響應(yīng)式郵件模板,通知類中唯一需要做的就是像下面這樣發(fā)送消息錯(cuò)誤處理是一個(gè)可選的擴(kuò)展包,提供了完整可用的服務(wù)。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 說(shuō)明 Laravel 5.3 發(fā)布臨近,大體構(gòu)建已經(jīng)完成,文檔整理完成后即可發(fā)布。 下面是對(duì) Laravel 5.3 新特性的整理,不完整列表。 1、全文搜...
閱讀 3288·2021-09-08 09:45
閱讀 1251·2019-08-30 15:53
閱讀 1522·2019-08-30 14:12
閱讀 981·2019-08-29 17:01
閱讀 2568·2019-08-29 15:35
閱讀 394·2019-08-29 13:09
閱讀 1965·2019-08-29 12:32
閱讀 3083·2019-08-26 18:37