Laravel 高效debug - sentry记录异常上下文信息
码农天地 -前言
在系统的运行过程中,随着用户体量和开发功能的增多的,多多少少会产生一些bug或者异常处理,然而每次在处理这些问题的时候,耗时最长的并不是去解决问题,而是尝试去找到出错的原因,分析到问题的所在,所以我们引入了 Sentry 异常监控日志记录平台,基于Sentry 可以很快的将错误汇总上报到平台上,从而方便开发人员及时发现问题,并作出修复响应。
但是在出错的过程中,有时候错误或者说是bug并不那么容易发现,他只会存在特定的场景或者数据中触发,从而导致我们本地并不能完整重现这个故障。
为了更方便开发人员定位到错误信息,仅凭借错误日志是往往不够的,需要提高更全更完整的上下文信息,如出错的用户信息、用户版本、用户设备、用户操作系统、用户来源等。
记录用户上下文信息在laravel中可以通过middleware或event来进行上下文信息的填充,这边我选择通过event来进行处理,先快速创建一个监听器。
php artisan make:listener AuthLoginHandler然后通过sentry scope来填充用户的上下文信息,下面的代码针对用户ID、账号、应用版本、系统版本、设备品牌等进行了填充,可以根据自主项目不太的需求来替换成不同的信息等。
<?php
namespace App\Listeners;
use App\Helpers\AppHelper;
use App\User;
use Sentry\State\Scope;
class AuthLoginHandler
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle($event)
{
$user = $event->user;
if (!is_null($user)) {
$this->setSentryUserContext($user);
}
}
public function setSentryUserContext(User $user)
{
//收集用户上下文信息 && 触发异常的时候上报到sentry
\Sentry\configureScope(function (Scope $scope) use ($user): void {
$scope->setUser([
'id' => $user->id,
'account' => $user->account,
'version' => AppHelper::version()->getVersion(),
'store' => AppHelper::info()->appStore(),
'os' => AppHelper::info()->getAppOS(),
'barnd' => AppHelper::info()->deviceBrand(),
]);
});
}
}
注册到EventServiceProvider监听的数组中
protected $listen = [
'Illuminate\Auth\Events\Login' => [
'App\Listeners\AuthLoginHandler',
],
];设置Tag(标签)tag的设置是键值对,可以通过tag来更好的查找和区分
$scope->setTag('小米用户',1);设置额外的信息可以用于设置一些额外自定义的信息:如目标服务器的时间、请求参数等。
$scope->setExtra('sign','6XBu5$juld3tF');运行测试以上就完成了基本的异常的上下文记录,如果出现一些比较难缠的故障,不确定是数据问题还是逻辑问题的时候就可以通过上下文的用户信息和异常日志来快速定位和重现问题,进行处理了。
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
php介绍
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
下一篇: anyRTC小程序SDK 4.0上线
Tags 标签
laravelsentrydebug异常处理php扩展阅读
Laravel No application encryption key has been specified
2020-06-28 19:09:43 []隐藏apache版本信息
2018-09-30 10:56:15 []CentOS 6.5安装php5.6
2018-09-30 11:36:53 []Laravel5.5 在windows下报错
2018-11-24 12:46:17 []PHP版ZIP压缩解压类库
2018-12-22 13:11:00 []CentOS7.2安装 PHP7.3.4 操作详细教程
2020-06-28 19:09:43 []PHP 设置脚本超时时间、PHP脚本内存限制设置
2020-06-28 19:09:43 []PHP 函数filesize获取文件大小错误,一直不变
2020-06-28 19:09:43 []Could not open input file: artisan
2020-06-28 19:09:43 []Linux php: command not found
2020-02-05 01:30:13 []加个好友,技术交流

