log all internal server errors to raygun

pull/263/head
Fabian Jakobs 2016-02-25 15:55:48 +00:00
rodzic d8bc554bfe
commit d93801214b
2 zmienionych plików z 31 dodań i 4 usunięć

Wyświetl plik

@ -1,6 +1,7 @@
"use strict";
var errors = require("http-error");
var EventEmitter = require("events").EventEmitter;
plugin.consumes = [
"connect",
@ -72,10 +73,12 @@ var NICE_USER_ERROR_MSG = "Something went wrong. Please retry in a few minutes a
function plugin(options, imports, register) {
var connect = imports.connect;
var showStackTrace = false;
var frontdoor = require("frontdoor");
var statics = imports["connect.static"];
var emitter = new EventEmitter();
function isDev(mode) {
return /^(onlinedev|devel)$/.test(mode);
@ -99,7 +102,6 @@ function plugin(options, imports, register) {
return code;
}
connect.useError(function(err, req, res, next) {
if (typeof err == "string")
err = new errors.InternalServerError(err);
@ -112,6 +114,13 @@ function plugin(options, imports, register) {
var accept = req.headers.accept || '';
if (statusCode == 500) {
emitter.emit("serverError", {
err: err,
req: req
});
}
if (/json/.test(accept)) {
var error = {
code: statusCode,
@ -159,6 +168,10 @@ function plugin(options, imports, register) {
});
register(null, {
"connect.error": {}
"connect.error": {
onInternalServerError: function(handler) {
emitter.on("serverError", handler);
}
}
});
}

Wyświetl plik

@ -4,7 +4,13 @@ var domain = require("domain");
var url = require("url");
var _ = require("lodash");
plugin.consumes = ["raygun", "connect", "http", "connect.remote-address", "metrics"];
plugin.consumes = [
"raygun",
"connect",
"http",
"connect.remote-address",
"connect.error"
];
plugin.provides = ["raygun.connect"];
module.exports = plugin;
@ -14,8 +20,16 @@ function plugin(options, imports, register) {
var errorClient = raygun.errorClient;
var warningClient = raygun.warningClient;
var connect = imports.connect;
var connectError = imports["connect.error"];
var server = imports.http.getServer();
var metrics = imports.metrics;
var noInternalServerErrors = !!options.noInternalServerErrors;
if (!noInternalServerErrors) {
connectError.onInternalServerError(function(msg) {
sendRequestError(msg.err, msg.req);
});
}
errorClient.user = warningClient.user = function(req) {
return (req && req.user) ? req.user.name : "";