Sentry新的统一SDK如何发送请求信息?
How to send request information with Sentry's new unified SDK?
旧版 Sentry Node SDK (raven) 允许通过在 options
对象(第二个参数)中传递请求对象来发送 HTTP 请求信息和错误:
Raven.captureException(someError, { req: req });
从文档中提取的代码行:https://docs.sentry.io/clients/node/usage/#raven-recording-breadcrumbs
有了它,我们可以获得有关错误的其他上下文,例如正在使用的设备。
有什么方法可以用新的SDK传递请求对象吗? context section of the new SDK 解释了如何使用范围发送用户标识、自定义标签等数据,但其中没有可用的请求选项。这是否意味着现在应该在 tags
and/or extra
个对象中手动发送请求信息?
正如@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);
旧版 Sentry Node SDK (raven) 允许通过在 options
对象(第二个参数)中传递请求对象来发送 HTTP 请求信息和错误:
Raven.captureException(someError, { req: req });
从文档中提取的代码行:https://docs.sentry.io/clients/node/usage/#raven-recording-breadcrumbs
有了它,我们可以获得有关错误的其他上下文,例如正在使用的设备。
有什么方法可以用新的SDK传递请求对象吗? context section of the new SDK 解释了如何使用范围发送用户标识、自定义标签等数据,但其中没有可用的请求选项。这是否意味着现在应该在 tags
and/or extra
个对象中手动发送请求信息?
正如@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);