こんにちは。
野中康生です。
仕事でSentryのあるエラーをSentryに送信して、あるエラーは送信しないという判別をする必要があったのですが、Sentryエラーイベントのフィルタリング機能であるbeforeSendがかなり便利だったので、共有します。
beforeSendの使い方例
使い方例として、invalid_access_tokenエラーをSentryに送信しない場合を例にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sentry.init({ app, dsn: 'dnsのURL', environment: environment, beforeSend(event, hint) { const exception = hint.originalException // invalid_access_tokenエラーはSentryに送信しない if (typeof exception === "object" && exception !== null && "error" in exception) { if (exception.error === "invalid_access_token") { return null } } return event }, }) |
まずbeforeSendは、Sentry.initの中で使用します。exception = hint.originalExceptionでSentryで発出するエラー等の情報を確認することができます。そしてexception.errorでSentryがキャッチしているエラーをstring型でキャッチできます。
if (typeof exception === “object” && exception !== null && “error” in exception) {}の部分は、TypeScriptの型エラーを回避するため、そしてexceptionがnullでないことを確認するためのチェックです。
最後にreturn nullを返すことでSentryに送信したくないエラーイベントを抑制することができます。
ちなみに上位プランを選択すれば管理画面側からフィルタリングすることも可能です。最近APMツールとしてSentryがどんどんなんでもできるようになっている感があるので、プロジェクトとして、Sentryしか使っていないのであれば上位プランの検討もいいかもしれません。
より詳細な使い方やカスタマイズ方法については公式HPをご覧ください。
参考
Learn more about how to configure your SDK to filter events …