Sentry SDK使用(Vue/Browser JS/Laravel)

news2024/11/17 13:47:00

本文介绍通过Vue/Browser JS/Laravel三个平台对接Sentry SDK。

1.在vue中使用

这是入门指引,为了了解更多,请查看完整文档

为了收集错误信息和采集性能数据,需要安装以下两个包:

@sentry/vue(Sentry's Vue SDK)
@sentry/tracing(instruments performance data)

使用 yarn or npm

安装依赖:

# Usingyarn
yarn add@sentry/vue @sentry/tracing
# Usingnpm
npm install --save@sentry/vue @sentry/tracing

在初始化root组件前先初始化sentry。

Vue 2

import Vue from "vue";
import Router from "vue-router";
import * as Sentry from "@sentry/vue";
import {Integrations } from "@sentry/tracing";
Vue.use(Router);
const router = new Router({
});
 
Sentry.init({
  Vue,
  dsn: "http://163bece17841482db08e8f4588a9d5de@sentrytest.cn/2",
  integrations: [
    new Integrations.BrowserTracing({
      routingInstrumentation: Sentry.vueRouterInstrumentation(router),
      tracingOrigins: ["localhost", "my-site-url.com", /^\//],
    }),
  ],
  // Set tracesSampleRate to 1.0 to capture100%
  // of transactions for performancemonitoring.
  // We recommend adjusting this value in production
  tracesSampleRate: 1.0,
});
// ...
new Vue({
  router,
  render: h => h(App),
}).$mount("#app");

Vue 3

import { createApp} from "vue";
import {createRouter } from "vue-router";
import * as Sentry from "@sentry/vue";
import {Integrations } from "@sentry/tracing";
 
const app = createApp({
  // ...
});
const router = createRouter({
  // ...
});
 
Sentry.init({
  app,
  dsn: "http://163bece17841482db08e8f4588a9d5de@sentrytest.cn/2",
  integrations: [
    new Integrations.BrowserTracing({
      routingInstrumentation: Sentry.vueRouterInstrumentation(router),
      tracingOrigins: ["localhost", "my-site-url.com", /^\//],
    }),
  ],
  tracesSampleRate: 1.0,
});
 
app.use(router);
app.mount("#app");

其中tracesSampleRate推荐在正式环境跳转到较小值。详情查看完整文档.

Vue Error Handling

请注意,如果启用此集成,默认情况下Vue不会在内部调用其“logError”。这意味着Vue渲染器中发生的错误不会显示在开发人员控制台中。如果要保留此功能,请确保传递“logErrors:true”选项

上传source map

示例为webpack版本,其他参考SourceMaps for Vue | Sentry Documentation

// 安装webpack插件

yarn add --dev @sentry/webpack-plugin
// webpack.config.js
const SentryWebpackPlugin = require("@sentry/webpack-plugin");
 
module.exports = {
  // ... other config above ...
 
  devtool: "source-map", // Source map generation must be turned on
  plugins: [
    new SentryWebpackPlugin({
      org: "example-org",
      project: "example-project",
 
      // Specify the directory containing build artifacts
      include: "./dist",
 
      // Auth tokens can be obtained from https://sentry.io/settings/account/api/auth-tokens/
      // and needs the `project:releases` and `org:read` scopes
      authToken: process.env.SENTRY_AUTH_TOKEN,
 
      // Optionally uncomment the line below to override automatic release name detection
      // release: process.env.RELEASE,
    }),
  ],};

org参数如下:

Project为项目名称

AuthToken需要在API密钥管理中设置,注意创建作用域

2.在Browser js中使用

在browser js中使用没有找到详细的官网文档,但按以下说明进行配置也可以使用。

Js git地址:https://github.com/getsentry/sentry-javascript

Js CDN地址:https://docs.sentry.io/platforms/javascript/install/cdn/

Js sdk区别:

  • 仅用于记录报错:bundle.min.js

  • 用于记录错误和性能数据:bundle.tracing.min.js

  • 用于记录错误、性能数据和会话回放:bundle.tracing.replay.min.js

引入bundle.min.js(使用CND或下载到本地),需要开启debug,则引入debug版本SDK,如bundle.debug.min.js,正式环境建议不用使用debug版本的SDK。

<script src="https://browser.sentry-cdn.com/7.34.0/bundle.tracing.min.js"></script>
{{--<script src="https://browser.sentry-cdn.com/7.34.0/bundle.tracing.debug.min.js"></script>--}}

<script>
    Sentry.init({,
        dsn:"http://163bece17841482db08e8f4588a9d5de@sentrytest.cn/2",
        environment:'local',
        release:'1.1.1',
        ignoreErrors: [/PickleRick_\d\d/, 'RangeError'],
        // An array of strings or regexps that'll be used to ignore specific errors based on their origin url
        denyUrls: ['external-lib.js'],
        // An array of strings or regexps that'll be used to allow specific errors based on their origin url
        allowUrls: ['http://127.0.0.1:8000', 'https://browser.sentry-cdn'],
        initialScope: {
            tags: {"my-tag": "my value"},
            user: {id: 42, email: "john.doe@example.com"},
        },
        debug:true,
        // integrations: [new Integrations.BrowserTracing()],
        // Set tracesSampleRate to 1.0 to capture 100%
        // of transactions for performance monitoring.
        // We recommend adjusting this value in production
        tracesSampleRate: 1.0,
    });
    window.onload=function(){
        //弹出未定义的变量,测试报错
        alert(zz);
    }
</script>

3.在laravel中使用

这是入门指引,了解更多请查看完整文档

安装 sentry/sentry-laravel:

composer require sentry/sentry-laravel

如果是laravel 5.5及以上,包会自动发现,否则需要自行在config/app.php配置

App/Exceptions/Handler.php添加以下代码:

Laravel 7.x及以上:

public function report(Throwable $exception)
{
    if (app()->bound('sentry') && $this->shouldReport($exception)) {
        app('sentry')->captureException($exception);
    }
 
    parent::report($exception);
}

Laravel 5.x 和 6.x:

public function report(Exception $exception)
{
    if (app()->bound('sentry') && $this->shouldReport($exception)) {
        app('sentry')->captureException($exception);
    }
 
    parent::report($exception);
}

通过以下命令设置sentry,dsn地址根据时间情况填写:

php artisan sentry:publish --dsn=http://163bece17841482db08e8f4588a9d5de@sentrytest.cn/2

这个命令会创建config/sentry.php,并且会在.env添加SENTRY_LARAVEL_DSN

可以使用以下代码抛出错误进行测试:

Route::get('/debug-sentry', function () {
    throw new Exception('My first Sentry error!');
});

性能数据采集

设置traces_sample_rate的值大于0.0(config/sentry.php)就会开启性能数据。

'traces_sample_rate' => 1.0 # be sure to lower this in production to prevent quota issues

或在env配置

SENTRY_TRACES_SAMPLE_RATE=1

注:由于PHP本身架构问题,采集性能数据可能会延长页面响应时间,故官网建议使用relay进行转发,或将traces_sample_rate设置成足够小或关闭。

4.常用参数和方法说明(以vue版为例,其他同理,部分参数不同平台可能略有差异)

常用参数:

参数名

说明

示例

dsn

数据发送地址(以下参数无特殊说明,都放到Sentry.init中

Sentry.init({
dsn:"http://163bece17841482db08e8f4588a9d5de@sentrytest.cn/2",
});

ignoreErrors

根据消息类型忽略错误,支持字符串和正则,不必填

ignoreErrors: [/PickleRick_\d\d/, 'RangeError'],

denyUrls

根据原始url忽略错误,支持字符串和正则,不必填

denyUrls: ['external-lib.js'],

debug

是否开启debug,true或false,默认false,非必填

debug: true,

enabled

是否开启sdk,true或false,默认true,非必填

enabled: true,

release

版本号

release: '1537345109360',

environment

环境,无特殊要求,推荐使用production/staging/dev/local等常用标识表示

environment: 'staging',

initialScope

初始化的自定义参数,可以传一些用户信息等

initialScope: {
    tags: {"my-tag": "my value"},
    user: {id: 42, email: "john.doe@example.com"},
},

integrations

集成配置,可以集成一些插件,如这里集成了日志采集插件

integrations: [new Integrations.BrowserTracing()],

tracesSampleRate

设置采样频率,0.0-1.0,0.0是关闭,1.0是全部采集,正式环境建议尽量设置小一点,

tracesSampleRate: 1.0,

beforeSend

错误报告提交前回调,如这里在提交前弹出用户反馈弹框

beforeSend(event) {
  if (event.exception) {
      Sentry.showReportDialog();
  }
  console.log(event);
  return event;
},

常用方法:

手动发送报告:

Sentry.captureMessage('captureMessage call message'); //发送普通信息
Sentry.captureException(new Error('duplicated exception')); //发送错误信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】Wireshark过滤数据包分析TCP三次握手

利用Wireshark分析TCP三次握手和四次挥手一、安装Wireshark二、界面介绍1. 网卡类型2. 首页功能2.1 按钮界面2.2 数据包列表2.3 数据包详细信息列表3. Wireshark过滤器3.1 设置数据抓取选项3.2 显示过滤器3.3 过滤关系3.4 复合过滤表达式3.5 常见用显示过滤需求及其对应表达式3…

IDaaS 如何帮助中小微企业(SMB)赢得市场先机|身份云研究院

数字化的本质是生产关系、生产要素的重构&#xff0c;目的是通过数字化技术释放更多生产力。数据是数字化变革中最重要的生产要素&#xff0c;而开发者则是数字世界中最重要的劳动者。对于企业来说&#xff0c;如何将数据转化成企业重要的生产资料以及如何提升开发者的效率为企…

机器学习算法竞赛实战--2,问题建模

目录 一&#xff0c;赛题理解 1&#xff0c;赛题理解 2&#xff0c;数据理解&#xff1a; 3&#xff0c;评价指标&#xff08;分类和回归&#xff09; 思考练习 当参赛者拿到竞赛题目的时候&#xff0c;首先应该考虑的事情就是问题建模&#xff0c;同时完成基线模型的管道…

如何备考2023年高级网络规划设计师?

网络规划设计师是软考高级考试科目之一&#xff0c;也是比较难的科目&#xff0c;据官方数据统计网规每年的通过率很低&#xff0c;而且每年只有下半年11月份考一次&#xff0c;如果是直接裸考&#xff0c;估计很悬哦~ 但是你参加考试获得证书的过程就是一个学习网络规划系统知…

一文揭晓,我是如何在Linux中查找自如

未来已来&#xff0c;只是不均衡地分布在当下 大家好&#xff0c;我是菜农&#xff0c;欢迎来到我的频道。 本文共 2187字&#xff0c;预计阅读 10 分钟 用过 Linux 的小伙伴都知道&#xff0c;在Linux系统中包含着大量的文件&#xff0c;绝大部分情况下&#xff0c;我们都是…

react hooks 中使用 Echarts图表中遇到的问题及相关配置

前言 项目开发中&#xff0c;需要做一个报表功能&#xff0c;看了下UI图&#xff0c;初步定下使用 echarts&#xff0c;不过之前使用 echarts 都是在 Vue2 和 Vue3 框架下开发&#xff0c;第一次使用 react-hooks 开发 echarts&#xff0c;将流程及一些 相关配置 写个随笔记录…

没有开发经验的程序员,怎么快速学习进入工作?

今天在群里&#xff0c;Ace老师遇到一位没有开发经验的同学&#xff0c;他的情况是这样的。 问题 Ace老师&#xff1a; 有一些伙伴&#xff0c;我现在真的没有想到太好的方法去教他&#xff0c;我跟大家讲一下他目前的情况&#xff0c;你们有经验的来和他说说这样的情况应该怎…

操作系统权限提升(三)之Windows系统内核溢出漏洞提权

系列文章 操作系统权限提升(一)之操作系统权限介绍 操作系统权限提升(二)之常见提权的环境介绍 注&#xff1a;阅读本编文章前&#xff0c;请先阅读系列文章&#xff0c;以免造成看不懂的情况&#xff01;&#xff01;&#xff01; Windows系统内核溢出漏洞提权介绍 溢出提…

五、环境的搭建

1、配置用户信息 以下操作是用终端模拟器Cmder&#xff0c;这个工具比较便捷&#xff0c;比如需要粘贴&#xff0c;点击一下鼠标右键就粘贴了。如果不想下载这个工具&#xff0c;也可以在终端操作(打开终端快捷键&#xff1a;Win R&#xff0c;输入cmd)。 (1)查看git 打开C…

Recast-Detour看这里就够了!

目录一、 Recast生成(一) 概述1&#xff0e; 简介(二) 生成过程1&#xff0e; 体素化2&#xff0e; 区域3&#xff0e; 轮廓4&#xff0e; 生成凸多边形5&#xff0e; 详细三角形(三) 配置1&#xff0e; 可配置参数2&#xff0e; 数据结构(四) 项目应用1&#xff0e; CS体系方案…

2023最新前端面试题3(持续更新)

46、HTML语义化 HTML 语义化就是让页面内容结构化&#xff0c;它有如下优点 1、易于用户阅读&#xff0c;样式丢失的时候能让页面呈现清晰的结构。 2、有利于 SEO&#xff0c;搜索引警根据标签来确定上下文和各个关键字的权重。 3、方便其他设备解析&#xff0c;如盲人阅读器根…

【Pytorch项目实战】之迁移学习:特征提取、微调、特征提取+微调、雾霾清除

文章目录迁移学习&#xff08;Transfer Learning&#xff09;方法一&#xff1a;特征提取&#xff08;Feature Extraction&#xff09;方法二&#xff1a;微调&#xff08;Fine Tuning&#xff09;&#xff08;一&#xff09;实战&#xff1a;基于特征提取的迁移学习&#xff0…

2023第三方应用苹果电脑磁盘读写工具Tuxera NTFS

今天&#xff0c;小编要来分享的是Mac下一款实用的NTFS读写软件——Tuxera NTFS&#xff0c;我们都知道OS X默认是不支持NTFS格式写入的&#xff0c;对于很多使用U盘或移动硬盘写操作的朋友来说非常的不便。而Tuxera NTFS很好的解决了这个问题。小子这次带来的是2023版本。 Tu…

kali入侵电脑

kali入侵电脑 注意&#xff1a;本文仅用于教学目的 1 kali制作exe控制电脑&#xff08;msfvenom&#xff09; kali是黑客常用的系统&#xff0c;里面集成了很多的攻击软件&#xff0c;这里我给大家演示一种使用kali制作.exe文件来控制自己电脑的方式。 msfvenom a Metasploit s…

Vue2 和Vue 3的区别

Vue 2 和 Vue 3的区别 1.双向数据绑定原理不同 Vue2 的双向数据绑定是利用ES5的一个APIObject.definePropert() 对数据进行劫持&#xff0c;结合发布订阅模式的方式来实现的。 Vue3 中使用ES6的Proxy API对数据代理。 Vue3 使用数据代理的优势有以下几点&#xff1a;1&#x…

深圳MES系统如何助力注塑企业实现数字化发展

家用电器、电子产品、日用品、医疗保健、汽车零部件、新能源以及建筑、玩具等行业对注塑制品需求量日益增长。注塑企业提供的各式各样注塑产品已深入到经济生活的各个领域&#xff0c;为国家经济的各个部门包括轻工业和重工业提供关键的支持。 现状 现在注塑企业的注塑机工作…

RTP协议基本分析(RTSP、WebRTC使用)

1、介绍 实时流传输协议&#xff08;RTSP&#xff1a;Real Time Streaming Protocol&#xff09;是一种网络传输协议&#xff0c;旨在发送低延迟流。 该协议由RealNetworks&#xff0c;Netscape和哥伦比亚大学的专家在1996年开发。它定义了应如何打包流中的数 据以进行传输。 …

【GD32F427开发板试用】INA226完成电流电压采集

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;จุ๊บ冰语 前言 本次有幸参与并通过了极术社区组织的【GD32F427开发板试用】活动&#xff0c;让我对国产兆易创新的GD32处理器有了更深刻的…

Scala系列之:函数式编程

Scala系列之&#xff1a;函数式编程一、面向对象编程和函数式编程二、函数基本语法三、函数和方法的区别四、函数定义五、函数参数六、函数至简原则七、匿名函数一、面向对象编程和函数式编程 面向对象编程&#xff1a; 解决问题&#xff0c;分解对象&#xff0c;行为&#x…

【最新消息】苹果放出新大招??!!

各位开发者新年快乐&#xff0c;许久没有更新了&#xff0c;近期我收到反馈意思遇到苹果回复的新政策&#xff0c;不知道各位开发者有没有碰到过&#xff0c;我也会在下文提出我的猜测&#xff0c;要是有开发者也遇到了同样的问题&#xff0c;欢迎一起交流哦。 疑似新政策&…