Как отправить запрос информации с новым унифицированным SDK Sentry? - PullRequest
0 голосов
/ 26 февраля 2019

Устаревший SDK Sentry Node ( raven ) позволял отправлять информацию HTTP-запроса вместе с ошибкой, передавая объект запроса внутри объекта options (2-й аргумент):

Raven.captureException(someError, { req: req });

Строка кода, извлеченная из документации: https://docs.sentry.io/clients/node/usage/#raven-recording-breadcrumbs

С этим мы можем получить дополнительный контекст об ошибке, такой как используемое устройство.

Есть ли способ, которым мыможно передать объект запроса с новым SDK?В разделе context нового SDK 1014 * объясняется, как отправлять такие данные, как идентификация пользователя, пользовательские теги и т. Д., С помощью областей, но там нет опции запроса.Означает ли это, что информация запроса теперь должна отправляться вручную внутри объектов tags и / или extra?

1 Ответ

0 голосов
/ 22 апреля 2019

Как поделился @MarkusUnterwaditzer, у меня сработала интеграция Express: https://docs.sentry.io/platforms/node/express/ Ключевыми компонентами являются добавление промежуточного программного обеспечения Sentry.Handlers.requestHandler(), а затем либо промежуточного программного обеспечения errorHandler, либо выполнение Sentry.captureException(error) самостоятельно (без необходимости проходить через{req: req}).

Пример кода:

const express = require('express');
const app = express();
const Sentry = require('@sentry/node');

Sentry.init({ dsn: 'https://8f0620a3bfea4f2ca26aefb074851e23@sentry.io/280382' });

// The request handler must be the first middleware on the app
app.use(Sentry.Handlers.requestHandler());

app.get('/', function mainHandler(req, res) {
  throw new Error('Broke!');
});

// The error handler must be before any other error middleware
app.use(Sentry.Handlers.errorHandler());

// Optional fallthrough error handler
app.use(function onError(err, req, res, next) {
  // The error id is attached to `res.sentry` to be returned
  // and optionally displayed to the user for support.
  res.statusCode = 500;
  res.end(res.sentry + '\n');
});

app.listen(3000);
...