浅谈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 事务处理数据实现代码
May 13 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
php常用Stream函数集介绍
Jun 24 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
Jul 18 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
php5数字型字符串加解密代码
2008/04/24 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
python strip()函数 介绍
2013/05/24 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
深入浅析python继承问题
2016/05/29 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
python的unittest测试类代码实例
2017/12/07 Python
python检测服务器端口代码实例
2019/08/31 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
港湾网络笔试题
2014/04/19 面试题
毕业求职自荐信格式是什么
2013/11/19 职场文书
写得不错的求职信范文
2014/07/11 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript