发布时间: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
下一篇:反射机制(reflection)
cdr x6(图形设计软件)V16.2.0 中文版
251.8M
ceb文件阅读器(阅览软件)V4.5.3 中文版
42.6M
ftp上传工具(传输软件)v3.8.2.0 中文版
22.3M
gghost一键恢复(系统备份还原工具)v10.03.09 中文版
14.5M
ghost11(系统ghost工具箱)v11.0 中文版
15.8M
unlocker(密码解锁工具) v3.0.3.4 中文版
32.1M
vc2005(动态链接库)V0.3.2 中文版
6.63MB
activesync下载
22.72MB
cs1.6下载
141MB
fireworks下载
88.4M
h264播放器下载
11.2M
hwinfo32下载
10.1M
picture manager下载
19.46 MB
winkawaks模拟器下载
2M
印象笔记下载
122.6M
2020-03-18
部分Y7000笔记本插电源的情况下无法睡眠
Windows XP如何创建热点
centos安装或修复grub引导
Fluentd日志同步软件入门教程
CentOS使用mysqlbinlog恢复MySQL数据库
TR260 G2如何开启板载SATA RAID功能
ezhttp更改sshd端口
使用联想MX8610MP3播放器不能识别其他MP3播放器MMC和SD卡中的MP3文件
Linux renice重新设定进程优先级命令详解