浅谈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中利用XML技术构造远程服务(上)
Oct 09 PHP
基于PHP+MySQL的聊天室设计
Oct 09 PHP
ADODB的数据库封包程序库
Dec 31 PHP
PHP EOT定界符的使用详解
Sep 30 PHP
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
PHP Class&Object -- 解析PHP实现二叉树
Jun 25 PHP
Laravel框架数据库CURD操作、连贯操作总结
Sep 03 PHP
php代码架构的八点注意事项
Jan 25 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
php 使用 __call实现重载功能示例
Nov 18 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
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
微信跳一跳自动运行python脚本
2018/01/08 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
教育课题研究自我鉴定范文
2013/12/28 职场文书
运动会广播稿400字
2014/01/25 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
员工工作自我评价
2014/09/26 职场文书
工程部部长岗位职责
2015/02/12 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
集结号观后感
2015/06/08 职场文书
python glom模块的使用简介
2021/04/13 Python