ReduxのMiddlewareを使ってSentryにReduxのstate情報を送りつける

Sentryというエラー収集サービスがあります.

ここには例外などが収集されるのですが,エラーが起きたときのReduxのstateが入るとエラー調査に役立ちますね.

SentryにはSentry.setExtraContext(旧版ではSentryClient.setContext)という関数があって,ここに任意のJSONを入れることが出来ます.

しかし,適当に初期化時に設定しても,初期状態のstateが入るだけで何も役に立ちません.

onFatalError関数を追加すればエラー時にフックをかけることが出来るようですが,今使っている@sentry/electron 0.4.1ではこのオプションが無いことがわかりました.

そして最新版はエラーになって使えないという事情があります.I update to 0.5.4, error on MODULE_NOT_FOUND · Issue #81 · getsentry/sentry-electron

なので,ReduxのMiddlewareを使ってstateが更新されるたびにSentryClient.setContextすることでデータを付加するようにしました.

ミドルウェアは以下のようになりました.

これでSentryのエラーダッシュボードにReduxのactionとstateが含まれます.

jestがSentry起動しようとしてエラー出すようになったので以下のモックで黙殺するようにしました.

このエントリーをはてなブックマークに追加 fb-like g-plusone pocket