swagger-stats
Version:
API Telemetry and APM. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices, based on express routes and Swagger (Open API) specification
57 lines (41 loc) • 1.36 kB
JavaScript
/**
* Created by sv2 on 2/18/17.
* Errors stats
*/
;
var util = require('util');
var debug = require('debug')('sws:errors');
var swsUtil = require('./swsUtil');
function swsErrors() {
// Store counts per each error code
this.statuscode_count = {};
// Store Top not found path
this.top_not_found = {};
// Store Top server error path
this.top_server_error = {};
}
swsErrors.prototype.getStats = function() {
return { statuscode: this.statuscode_count, topnotfound: this.top_not_found, topservererror: this.top_server_error };
};
// Add information about error
swsErrors.prototype.countResponse = function (res) {
if(!swsUtil.isError(res.statusCode)) return;
// Increase count by code
if(!(res.statusCode in this.statuscode_count)) {
this.statuscode_count[res.statusCode] = 0;
}
this.statuscode_count[res.statusCode]++;
if(res.statusCode==404){
this.countPathHit(res._swsReq.sws.originalUrl,this.top_not_found);
}else if(res.statusCode==500){
this.countPathHit(res._swsReq.sws.originalUrl,this.top_server_error);
}
};
// Check if this qualifies as longest request, and store is yes
swsErrors.prototype.countPathHit = function(path,store) {
if(!(path in store)) {
store[path] = 0;
}
store[path]++;
};
module.exports = swsErrors;