浅谈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横向重复区域显示二法
Sep 25 PHP
PHP文件上传原理简单分析
May 29 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
php快递单号查询接口使用示例
May 05 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
php自定义时间转换函数示例
Dec 07 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 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更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
js+css在交互上的应用
2010/07/18 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
python解决字典中的值是列表问题的方法
2013/03/04 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
python 反向输出字符串的方法
2018/07/16 Python
python3 pygame实现接小球游戏
2019/05/14 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
英语自我评价范文
2014/01/24 职场文书
店长职务说明书
2014/02/04 职场文书
室内拓展活动方案
2014/02/13 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
Elasticsearch 数据类型及管理
2022/04/19 Python