Node.js集成Sentry

本文详细介绍了Sentry JavaScript SDK的集成方式,包括如何添加、删除及设置自定义集成,以及如何利用EventProcessors和hints来丰富事件处理过程。通过示例代码展示了如何控制事件和面包屑的生成,适用于前端和后端开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们所有与JavaScript相关的SDK都提供了相同的API,但这些文档的这一部分解释了它们之间存在一些差异。

一、集成

我们所有的SDK都提供了可以在某种插件中看到的集成。所有JavaScript SDK都提供默认的集成,请检查特定SDK的详细信息,以查看它们提供的集成。

在我们所有的JavaScript SDK中,有一点是相同的,那就是添加或删除Integrations的方式,例如:for @ sentry / node。

二、添加集成

import * as Sentry from '@sentry/node';

// All integration that come with an SDK can be found on Sentry.Integrations object
// Custom integration must conform Integration interface: https://github.com/getsentry/sentry-javascript/blob/master/packages/types/src/index.ts

Sentry.init({
  dsn: 'https://<key>@sentry.io/<project>',
  integrations: [new MyAwesomeIntegration()]
});

三、删除集成

在此示例中,我们将删除默认启用的集成,以便为事件添加面包屑:

import * as Sentry from '@sentry/node';

Sentry.init({
  dsn: 'https://<key>@sentry.io/<project>',
  integrations: integrations => {
    // integrations will be all default integrations
    return integrations.filter(integration => integration.id !== 'Console');
  }
});

 四、设置集成的替代方法

import * as Sentry from '@sentry/node';

Sentry.init({
  dsn: 'https://<key>@sentry.io/<project>',
  integrations: integrations => {
    // integrations will be all default integrations
    return [...integrations, new MyCustomIntegration()];
  }
});

 五、提示

Event和Breadcrumb提示是包含用于组合事件或面包屑的各种信息的对象。对于事件,这些事件包括event_id,originalException,syntheticException(在内部用于生成更清晰的堆栈跟踪)以及用户附加的任何其他任意数据。对于面包屑,它依赖于所有实现。对于XHR请求,提示包含xhr对象本身,对于用户交互,它包含DOM元素和事件名称等。它们在两个地方可用。 beforeSend / beforeBreadcrumb和eventProcessors。这是我们允许用户修改我们放在一起的两种方式。当前存在事件的常见提示:

originalException

导致创建事件的原始异常。这对于更改事件的分组方式或提取其他信息非常有用。

syntheticException

当引发字符串或非错误对象时,Sentry会创建一个合成异常,以便您可以获得基本的堆栈跟踪。此异常存储在此处以进行进一步的数据提取。这些存在于面包屑中:

level / input

对于从控制台日志拦截创建的面包屑,它将原始控制台日志级别和原始输入数据保存到日志功能。

request / response / event

对于从HTTP请求创建的面包屑,它保存请求和响应对象(来自节点HTTP API)以及节点事件(响应或错误)。

六、EventProcessors

使用eventProcessors,您可以使用其他数据进入丰富事件的过程。您可以在当前范围上添加自己的eventProcessor。与beforeSend的区别在于eventProcessors在范围级别上运行,其中beforeSend全局运行,而不管您在哪个范围内运行。 eventProcessors还可以选择接收提示,参见:Hints。

// This will be set globally for every succeeding event send
Sentry.configureScope(scope => {
  scope.addEventProcessor(async (event, hint) => {
    // Add anything to the event here
    // returning null will drop the event
    return event;
  });
});

// Using withScope, will only call the event processor for all "sends"
// that happen within withScope
Sentry.withScope(scope => {
  scope.addEventProcessor(async (event, hint) => {
    // Add anything to the event here
    // returning null will drop the event
    return event;
  });
  Sentry.captureMessage('Test');
});

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值