如何使用哨兵 v5 全局忽略错误以减少噪音



使用已弃用的客户端 Raven,您可以忽略麻烦的错误:

Raven.config('your-dsn', {
    ignoreErrors: [
        'Can't execute code from freed script',
        /SecurityError: DOM Exception 18$/
    ]
}).install();

我发现新客户端的唯一方法是使用 before-send 钩子:https://docs.sentry.io/error-reporting/configuration/filtering/?platform=browser#before-send

import * as Sentry from '@sentry/browser';
init({
  beforeSend(event, hint) {
    const { message } = hint.originalException;
    if (message && message.match(/database unavailable/i)) {
      return null;
    }
    return event;
  }
});

我搜索了整个文档,但没有找到忽略错误的全局方法。

似乎

有一个ignoreErrors配置选项。它记录在他们的示例应用程序中:

https://github.com/getsentry/sentry-javascript/blob/ab7ba810a97a2acae3dbd2c82b07e3972147bb97/packages/browser/examples/app.js#L38

很简单,我在nuxt.config中为nuxtjs应用程序使用此配置.js

  sentry: {
    disabled: process.env.APP_ENV === 'development',
    dsn: 'xxxx'
    maxBreadcrumbs: 50,
    config: {
      environment: process.env.APP_ENV,
      debug: process.env.APP_ENV === 'development',
      release: '1.0.0',
      beforeSend: (event, hint) => {
        // see all errors, what you wants. 
        // using console.log(hint.originalException)
        // for example, not send when error code 404 when using axios
        const { response } = hint.originalException
        if (response && response.status && response.status === 404) {
          return null
        }
        return event
      }
    }
  },

普通 JS:


process.on('unhandledRejection', (reason, promise) => {
  //console.log('(Custom message) Unhandled Rejection found at:', reason.stack, reason.caputureStackTrace);
  console.log('Unhandled Rejection at: Promise', promise, 'reason:', reason, reason.constructor.name);
});

我猜你的正则表达式不匹配,请尝试:/SecurityError\: DOM Exception 18$/而不是/SecurityError: DOM Exception 18$/,注意\

我必须根据文档以这种方式解决它。

https://docs.sentry.io/platforms/javascript/guides/vue/configuration/filtering/

let ignoreError = false;
Sentry.init({
Vue,
dsn: getEnv("SENTRY_DSN"),
beforeBreadcrumb: (response) => {
    if (response && 
        response.category && 
        response.category === "xhr" &&
        response.data &&
        response.data.status_code &&
        response.data.status_code == 401 || 404
    ) {
        ignoreError = true;
    } else {
        ignoreError = false;
    }
},
beforeSend: (event, hint) => {
    if (ignoreError) {
        return null;
    }
    return event;
},
environment: getEnv("NODE_ENV"),
sampleRate: parseFloat(getEnv("SENTRY_SAMPLE_RATE")),
integrations: [
    new BrowserTracing({
        routingInstrumentation: Sentry.vueRouterInstrumentation(router),
        tracingOrigins: [getEnv("SENTRY_TRACING_ORIGINS")],
    }),
],
trackComponents: true,
logError: true,
debug: false,
tracesSampler: samplingContext => {
    if (samplingContext?.transactionContext?.name === 'GET /health') {
        return 0.0;
    } else {
        return parseFloat(getEnv("SENTRY_TRACES_SAMPLE_RATE"));
    }
},

}(;

导出默认哨兵

相关内容

  • 没有找到相关文章

最新更新