首页 > 解决方案 > 如何为 Exress JS 应用程序设置哨兵上下文?

问题描述

我想为我的 Express JS 应用程序的每个请求添加自定义 Sentry 上下文。我试图这样做:

function sentryContextMiddleware(req, res, next) {
  const { headers, body } = req;
  Sentry.setContext('Request', { headers, body });
  Sentry.setContext('foo', { foo: 'bar' });
  Sentry.setExtra('bar', { baz: 'lol' });
  next();
}

// ...

Sentry.init({
  dsn: config.sentryDsn,
  environment: config.sentryEnv,
  integrations: [
    new Sentry.Integrations.Http({ tracing: true, breadcrumbs: true }),
    new Tracing.Integrations.Express({ app }),
    new Tracing.Integrations.Mongo({}),
  ],
  tracesSampleRate: 1.0,
});

app.use(Sentry.Handlers.requestHandler();
app.use(Sentry.Handlers.tracingHandler());
app.use(bodyParser.json({ limit: '500mb' }));
app.use(sentryContextMiddleware);
app.use('/', index);
app.use(Sentry.Handlers.errorHandler());
app.use((err, req, res) => {
  res.locals.message = err.message || err;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  res.status(err.status || 500);
  res.render('error');
});

但它不起作用。我究竟做错了什么?

标签: expresssentry

解决方案


推荐阅读