当前位置: 首页 > article >正文

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

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

1. 安装 sentry9 包

# 安装 sentry9 包
composer require "tekintian/sentry9-php"

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

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

Sentry.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配置项目

	// 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的配置, 是不是很简单.


http://www.kler.cn/a/442013.html

相关文章:

  • Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比
  • vue+高德API搭建前端3D交通页面
  • Zookeeper(16)Zookeeper的状态模型是什么?
  • PHP 8.4 安装和升级指南
  • 于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)
  • 诡异的Spring @RequestBody驼峰命名字段映射失败为null问题记录
  • NSDT 3DConvert:高效实现大模型文件在线预览与转换
  • 关于llama2:从原始llama-2-7b到llama-2-7b-hf的权重转换教程
  • cesium 与 threejs 对比
  • attack xv6
  • Pytorch | 从零构建ResNet对CIFAR10进行分类
  • RabbitMQ:添加virtualHost
  • 005 QT常用控件Qwidget_上
  • 随手记:小程序兼容后台的wangEditor富文本配置链接
  • VMware ubuntu16.04怎么设置静态IP联网
  • openharmony bootanimation分析及常见错误
  • 如何在 Debian 上安装 Dovecot(POP / IMAP)?
  • TCP客户端模拟链接websocket服务端
  • 基于ubuntu的mysql 8.0安装教程
  • 中国当代篆刻孙溟㠭作品《美》
  • 科研绘图系列:R语言绘制韦恩图(Venn plot)
  • WebGPU、WebGL 和 OpenGL/Vulkan对比分析
  • 生信学习入门常见错误可能的原因分类总结和求助指南
  • 【Java 数据结构】ArrayList 类 与 模拟实现顺序表
  • Cesium 无人机航线规划(航点航线)
  • MYSQL中锁的类型以及如何排查锁