GA 側
-
GA ではexception トラッキング用の方法が用意されている
ただ、それをどう表示側で見ればよいか、ドキュメントを見るだけではよくわからない
-
カスタムレポートを作ってくれている人がいたので、これを利用させてもらう
Angular 側
-
Angular では 基本 window.onerror が発火しない
- デフォルトで$exceptionHandler というサービスが拾うようになっている
- http://stackoverflow.com/questions/27782933/possible-to-catch-javascript-errors-within-an-angular-app-from-window-onerror
-
exceptionHandler は、デフォルトではエラーをconsole に吐くことしかしない。今回はこれをoverride して利用する
こんなかんじ
app.factory('$exceptionHandler', ['$window', '$log', function($window, $log) {
return function(exception, cause) {
$log.error.apply($log, arguments);
if ( $window.ga) {
$window.ga( 'send', 'exception', {
'exDescription': exception.stack,
'exFatal': true,
'appName': 'Compathy',
'appVersion': '0.3'
});
}
};
}])
- ちなみに、exception をそのまま渡すと、exception.message のみがtoString() されてしまい、エラー箇所(ファイルや行番号) が抜けてしまうので、あえてexception.stack を指定している
確認
-
まずブラウザから、exception が発生したときに、GA への送信がされていることを確認する
- Develper Console のNetwork で"collect" でフィルタするとよい
-
次に、GA のカスタムレポートで、レポートが見えることを確認する
- リアルタイムでは見れないので、少し待つ必要あり