浅谈Laravel中使用Slack进行异常通知


Posted in PHP onMay 29, 2021

概述

通常,我们可以依靠用户反馈、经常查看程序日志来发现程序存在的问题。但这要么不可靠要么不及时,所以下面我们介绍一种比较有效的做法--使用 Slack 通知程序跑出的异常信息。

Slack 是一款即时通信软件,类似于 QQ,它提供开放的 API,可以调用它向自己团队中指定的个人或者频道(Channel)发送消息,因此用它来进行异常通知是再合适不过的。

安装 maknz/slack-laravel 包

具体的安装方法请参考 Github 上的 [readme](https://github.com/maknz/slack-laravel)。

配置

安装完成后使用 php artisan vendor:publish 生成 config\slack.php 配置文件,然后在.env文件中添加如下三项配置值.

SLACK_ENDPOINT=//slack 终端,即 slack 接口地址

SLACK_CHANNEL=//消息默认接收频道

SLACK_USERNAME//消息默认接收人

> 当然,也可以直接直接在 config\slack.php 对应配置的默认值而不使用 .env,但并不推荐这样做。

> 根据实际需要设置 SLACK_CHANNEL 和 SLACK_USERNAME ,二者并不是必须的

调整 AppExceptionsHandler 类的 report 方法

实现 Slack 通知异常信息的逻辑。代码如下:

/**
 
 * Report or log an exception.
 
 *
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);
}

对于一些可能频繁出现但又不致命的异常,例如404 NotFoundHttpException,我们可能并不想让程序通知它。为此,我们只需要在 Aop\Exceptions\Handler 类里的 $dontReort 属性中加入指定的异常的类型就可以了。

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

示例中展示的是对指定的频道(channel)发送信息,当然你还可以向指定的人发送,或者其它更复杂的用法。不过要注意指定的用户名和频道是自己 slack 团队中已经存在的,不然会出错。

这样,当程序中出现异常时,运维能在第一时间收到相关的通知信息,方便及时处理了。

以上就是浅谈Laravel中使用Slack进行异常通知的详细内容,更多关于Laravel中使用Slack进行异常通知的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
php像数组一样存取和修改字符串字符
Mar 21 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
php常用图片处理类
Mar 16 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
php中final关键字用法分析
Dec 07 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
详解Go与PHP的语法对比
May 29 #PHP
详解php中流行的rpc框架
如何在Mac上通过docker配置PHP开发环境
浅谈如何提高PHP代码质量之端到端集成测试
May 28 #PHP
浅谈如何提高PHP代码质量之单元测试
May 28 #PHP
浅谈如何提高PHP代码的质量
May 28 #PHP
详解thinkphp的Auth类认证
May 28 #PHP
You might like
PHP4实际应用经验篇(6)
2006/10/09 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
python的re模块应用实例
2014/09/26 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python实现求数列和的方法示例
2018/01/12 Python
python在文本开头插入一行的实例
2018/05/02 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
大学生求职信
2014/06/17 职场文书
作弊检讨书
2015/01/27 职场文书
简单的辞职信模板
2015/05/12 职场文书
法定授权委托证明书
2015/06/18 职场文书
毕业典礼致辞
2015/07/29 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python