2020-05-25 16:25:09
异常处理是软件开发过程中无法逃避的问题。对于一套设计良好代码高效的程序,出现异常的可能性会比较低,但这并不意味着不会出现异常,有些异常甚至会引起严重的后果,所以如何及时的发现程序中的异常并处理它便显得十分重要了。
通常,我们可以依靠用户反馈、经常查看程序日志来发现程序存在的问题。但这要么不可靠要么不及时,所以下面我们介绍一种比较有效的做法--使用 Slack 通知程序跑出的异常信息。
Slack 是一款即时通信软件,类似于 QQ,它提供开放的 API,可以调用它向自己团队中指定的个人或者频道(Channel)发送消息,因此用它来进行异常通知是再合适不过的。
1.安装 maknz/slack-laravel 包
具体的安装方法请参考 Github 上的 [readme](http://github.com/maknz/slack-laravel)。
2.配置
安装完成后使用 php artisan vendor:publish 生成 configslack.php 配置文件,然后在.env文件中添加如下三项配置值. ``` SLACK_ENDPOINT=//slack 终端,即 slack 接口地址 SLACK_CHANNEL=//消息默认接收频道 SLACK_USERNAME//消息默认接收人 ``` > 当然,也可以直接直接在 configslack.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 = " [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 团队中已经存在的,不然会出错。
这样,当程序中出现异常时,运维能在第一时间收到相关的通知信息,方便及时处理了。
以上就是如何在 Laravel 中使用 Slack 进行异常通知的详细内容
更多学习内容请访问:
怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)zhuanlan.zhihu.com
MeEdu v2.0-beta12 版本上线,基于 Laravel 的在线点播收费系统
03-15
MeEdu v2.0-beta13 版本上线,基于 Laravel 的在线点播收费系统
02-14
如何关闭手机通知栏中的百度搜索框
07-09
Win10 RS2(1703)应用闪退、异常的处理方法
06-16
“联想云盘服务器连接异常”的解决方法
05-19
为什么I750的TV输出与个别电视连接时候出现异常的现象?
04-03
使用zabbix监控K8s(kubernetes)异常POD
03-13
使用宽带上网时,拨号异常
06-10
具有AMT功能的主板DIMM1插槽没有插入内存时开机风扇声音异常大
07-03
安装杀毒软件后部分64位Windows 7/8系统启动异常问题的处理方法
05-27
您的游戏环境异常,请重启机器后再试(警告码0.5.540)
03-03
找出Windows 7异常关机原因
05-02
Android 相机开发中的尺寸和方向问题
07-10
Docker命令行参考(14) – docker attach附着到一个运行中的容器
07-19
IdeaPad Y510在windows XP中如何使用声卡的混音功能
07-18
Linux kill删除执行中的程序或工作命令详解
07-24
Vista系统中本地连接图标丢失,如何处理?
07-13
Win7如何清除资源管理器中地址栏中的历史记录
07-14
Windows 7系统中在屏幕键盘中,数字小键盘上没有按键3和按键8
06-27
docker-postfix, 在 Docker 容器中,使用smtp身份验证( sasldb ) 运行后缀
06-26
activesync(电脑数据同步工具)v6.1 中文版
22.72MB
下载cdr x6(图形设计软件)V16.2.0 中文版
251.8M
下载cs1.6?(射击类游戏)v1.6 中文版
141MB
下载fireworks(网页作图软件) v8.0.0.77 中文版
88.4M
下载h264播放器(视频播放软件)v6.2.0 中文版
11.2M
下载hwinfo32(系统信息检测工具) v7.05.4490 中文版
10.1M
下载vc2005(动态链接库)V0.3.2 中文版
6.63MB
下载印象笔记(笔记资料管理软件) v6.23.2.8859 中文版
122.6M
下载ceb文件阅读器下载
42.6M
下载ftp上传工具下载
22.3M
下载gghost一键恢复下载
14.5M
下载ghost11下载
15.8M
下载picture manager下载
19.46 MB
下载unlocker下载
32.1M
下载winkawaks模拟器下载
2M
下载