From 86121e1a34568d3b893a252eac48036cea5cad0f Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 30 Sep 2015 12:31:13 +0000 Subject: [PATCH 1/2] Report error dialog errors to raygun --- plugins/c9.error/logger.raygun.js | 5 +++++ plugins/c9.ide.dialog.common/error.js | 8 ++++++-- plugins/c9.ide.errorhandler/raygun_error_handler.js | 4 +++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/plugins/c9.error/logger.raygun.js b/plugins/c9.error/logger.raygun.js index 784832c8..c1997922 100644 --- a/plugins/c9.error/logger.raygun.js +++ b/plugins/c9.error/logger.raygun.js @@ -1,3 +1,8 @@ +/** + * This error handler is for server side error logging. + * + **/ + "use strict"; plugin.consumes = ["raygun"]; diff --git a/plugins/c9.ide.dialog.common/error.js b/plugins/c9.ide.dialog.common/error.js index 730e4c15..9fa4b731 100644 --- a/plugins/c9.ide.dialog.common/error.js +++ b/plugins/c9.ide.dialog.common/error.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "ui", "metrics"]; + main.consumes = ["Plugin", "ui", "metrics", "error_handler"]; main.provides = ["dialog.error"]; return main; @@ -9,6 +9,7 @@ define(function(require, exports, module) { var Plugin = imports.Plugin; var ui = imports.ui; var metrics = imports.metrics; + var errorHandler = imports.error_handler; /***** Initialization *****/ @@ -121,7 +122,10 @@ define(function(require, exports, module) { return console.error("empty error message", message); } - console.error("Error dialog shown: ", getMessageString(message)); + errorHandler.log(new Error("Error dialog shown"), { + message: message, + messageString: getMessageString(message), + }); } hide(function() { diff --git a/plugins/c9.ide.errorhandler/raygun_error_handler.js b/plugins/c9.ide.errorhandler/raygun_error_handler.js index 10eae39d..6c20b7be 100644 --- a/plugins/c9.ide.errorhandler/raygun_error_handler.js +++ b/plugins/c9.ide.errorhandler/raygun_error_handler.js @@ -1,5 +1,7 @@ /** - * This error handler catches window.onerror and sends them to raygun.io + * This error handler is for client side error logging + * It also automatically catches window.onerror and sends them to raygun.io + * You can also import it and call .log to manually send an error * * @extends Plugin * @singleton From 2fde10c25a596683d644ee2b743a1b27a48c7f4e Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 30 Sep 2015 12:33:12 +0000 Subject: [PATCH 2/2] Only increment dialog.error when it's actually shown to the user, not for empty messages --- plugins/c9.ide.dialog.common/error.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/c9.ide.dialog.common/error.js b/plugins/c9.ide.dialog.common/error.js index 9fa4b731..33e12738 100644 --- a/plugins/c9.ide.dialog.common/error.js +++ b/plugins/c9.ide.dialog.common/error.js @@ -115,13 +115,13 @@ define(function(require, exports, module) { + (message.className ? message.className : ""); if (!message.noError) { - metrics.increment("dialog.error"); - if (!message) { console.trace(); return console.error("empty error message", message); } + metrics.increment("dialog.error"); + errorHandler.log(new Error("Error dialog shown"), { message: message, messageString: getMessageString(message),