浅谈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 删除cookie和浏览器重定向
Mar 16 PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
解析php中curl_multi的应用
Jul 17 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 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 魔术方法使用说明
2009/10/20 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
Python正则表达式匹配HTML页面编码
2015/04/08 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
Python sublime安装及配置过程详解
2020/06/29 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
会计岗位职责
2015/02/03 职场文书
会议室使用管理制度
2015/08/06 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2016入党心得体会范文
2016/01/06 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis