浅谈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 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
PHP下常用正则表达式整理
Oct 26 PHP
php中apc缓存使用示例
Dec 25 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
php定界符
Jun 19 PHP
php跨站攻击实例分析
Oct 28 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
PHP身份证校验码计算方法
Aug 10 PHP
php面试中关于面向对象的相关问题
Feb 13 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 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
77A一级收信机修理记
2021/03/02 无线电
php获取网页内容方法总结
2008/12/04 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
python 保存float类型的小数的位数方法
2018/10/17 Python
python 切换root 执行命令的方法
2019/01/19 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
师范应届生教师求职信
2013/11/05 职场文书
大学新生欢迎词
2014/01/10 职场文书
保密工作责任书
2014/04/16 职场文书
个人安全生产责任书
2014/07/28 职场文书
公司地址变更通知
2015/04/25 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Python打包为exe详细教程
2021/05/18 Python
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript