Sentry日志管理thinkphp8 tp8 sentry9 sentry8 php8.x配置步骤, tp8自定义异常处理类使用方法

tp8的默认使用的就是composer来管理第三方包, 所以直接使用 composer 来安装 sentry9 即可. 同时tp8和tp5的配置方式不太一样, 这里我们直接使用自定义异常类来处理Sentry的异常.

1. 安装 sentry9 包

bash 复制代码
# 安装 sentry9 包
composer require "tekintian/sentry9-php"

2. 创建tp8的自定义异常处理类

位置 app\common\exception 目录下创建 Sentry.php 文件

Sentry.php自定义异常类的内容如下:

php 复制代码
<?php
namespace app\common\exception;

use think\exception\Handle;
use think\exception\HttpException;
use think\exception\ValidateException;
use think\Response;
use Throwable;
use Sentry9\Client;

class Sentry extends Handle
{
    /**
     * @var Client
     */
    private $sentry;
    /**
     * 获取Sentry异常处理实例
     *
     * @return Client
     */
    public function getSentry(): Client {
        if (is_null($this->sentry)) {
            // 初始化Sentry
            $dsn = config('app.sentry_dsn');
            $this->sentry = \Sentry9\Sentry::listen($dsn);
        }
        return $this->sentry;
    }
    /**
     * 记录异常信息(包括日志或者其它方式记录)
     *
     * @access public
     * @param Throwable $exception
     * @return void
     */
    public function render($request, Throwable $e): Response
    {
        // 获取Sentry异常处理实例
        $sentry = $this->getSentry();
         // 记录异常信息  放在这里就是记录所有的异常信息, 如果放在 if里面的话就可以只记录指定类型的异常信息
        $sentry->captureException($e);

        // 参数验证错误
        if ($e instanceof ValidateException) {
             // 记录错误日志
            return json($e->getError(), 422);
        }

        // 请求异常
        if ($e instanceof HttpException && $request->isAjax()) {
           

            return response($e->getMessage(), $e->getStatusCode());
        }

        // 其他错误交给系统处理
        return parent::render($request, $e);
    }

}

3. 在app/provider.php中加载自定义异常类

就是将 'think\exception\Handle' => '\app\common\exception\Sentry', 添加到app/provider.php中 这里就会自动覆盖tp8的异常处理类.

4. 修改tp8配置文件 config/app.php,增加SENTRY配置项目 在config/app.php文件的最后增加sentry9配置项目

php 复制代码
	// sentry DSN配置
    'sentry_dsn'   => env('SENTRY_DSN', 'https://xxxxxxx@sentry.tekin.cn/2'),

5. 在项目根目录的.env文件中增加SENTRY_DSN 配置

复制代码
SENTRY_DSN = https://xxxxxxx@sentry.tekin.cn/2

到此我们就完成了thinkphp8中的sentry9的配置, 是不是很简单.

相关推荐
BingoGo9 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack9 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack3 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082854 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe4 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5