如何使用 sentry v5 全局忽略错误以减少噪音
Posted
技术标签:
【中文标题】如何使用 sentry v5 全局忽略错误以减少噪音【英文标题】:How to globally ignore errors with sentry v5 to reduce noise 【发布时间】:2019-09-14 17:35:27 【问题描述】:使用已弃用的客户端 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;
);
我搜索了所有文档,但没有找到一种忽略错误的全局方法。
【问题讨论】:
【参考方案1】:似乎有一个ignoreErrors
配置选项。它记录在他们的示例应用程序中:
https://github.com/getsentry/sentry-javascript/blob/ab7ba810a97a2acae3dbd2c82b07e3972147bb97/packages/browser/examples/app.js#L38
【讨论】:
谢谢,这正是我想要的!【参考方案2】:纯 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$/
,注意\\
【讨论】:
【参考方案3】:简单,我在 nuxt.config.js 中将此配置用于 nuxtjs 应用程序
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
,
【讨论】:
以上是关于如何使用 sentry v5 全局忽略错误以减少噪音的主要内容,如果未能解决你的问题,请参考以下文章
您如何全局设置 Jackson 以忽略 Spring 中的未知属性?