Google Analyticsを利用してクライアントサイドのエラーのレポーティングを行う

数年前に記事やつぶやきをみたけたけど忘れてしまったのでメモ変わりに記載。ユニバーサルアナリティクス用のコードです。基本的にはwindow.onerrorイベントを補足してgaにイベントを送信するだけです。要素技術として、アナリティクスのイベント・トラッキングを利用しています。

ソースコード

window.onerror = function(message, file, line) {
    message = message + " at " + file + "[" + line + "]";
    // GAのイベントは category, action, labelの合計値が7kくらいまでおくれる"らしい"
    ga("send", "event", "error", "javascript", message.replace(/\r?\n/gm, "").substr(0, 1024 * 5));
    return false
};
// 以下のコードを適当に記載で確認
// throw new Error('error test');

イベントトラッキングの設計

アナリティクスのイベント集計の場合は、category(種類), action(行動), label(ラベル)と分けてトラッキングすることが可能です。今回は、categoryをerror。actionをjavascript。labelをonerrorから取れる各種情報と定義しました。
actionの部分をHogeExcepiton, BarException。labelにfileやline。スタックトレースと定義してもいいかもしれません。ベストプラクティスがあったら教えてください。

アナリティクスで確認する

  • [リアルタイム] → [イベント]
  • [行動]→[イベント]

から色々辿れる。

それユニバーサルアナリティクスのExceptionトラッキングで...

もしかして。このことですか?https://developers.google.com/analytics/devguides/collection/analyticsjs/exceptions。こちらでももちろんトラッキングできます。標準では閲覧用のビューやレポートが無いので自身でマイレポート設定が必要です。
アナリティクスは社内のマーケの人とかも見ると思うのでひっそりとトラッキングしたい場合はExceptionトラッキング方式をおすすめします。
レポートの設定はこちらから。http://stackoverflow.com/questions/21718481/report-for-exceptions-from-google-analytics-analytics-js-exception-tracking
iOSAndroidだとCrash & Exceptionsというビューがあるのでウェブ用のトラッキングでも出現期待ですね。

一番大事なこと

クライアントサイドエラーをトラッキングするのが目的ではなく修正するのが目的です。トラッキングするならただちに修正すること。修正する気持ちが無いならならトラッキングしないほうが懸命です。