snapi2
Version:
An API-first RESTful server framework built on Swagger and Restify
92 lines (80 loc) • 2.17 kB
JavaScript
// Generated by CoffeeScript 1.12.7
;
var Bunyan, Logger, errorToJson;
Bunyan = require('bunyan');
/*
Define a special toJSON property for serializing Error objects
Allows logging of custom properties including nested Error objects
*/
errorToJson = {
configurable: true,
value: function() {
var alt, storeKey;
alt = {};
storeKey = function(key) {
return alt[key] = this[key];
};
Object.getOwnPropertyNames(this).forEach(storeKey, this);
return alt;
}
};
Object.defineProperty(Error.prototype, 'toJSON', errorToJson);
module.exports = Logger = (function() {
function Logger(opts) {
var logConfig;
opts.log = opts.log || {};
if (opts.log.logger) {
this.log = opts.log.logger;
} else {
logConfig = {};
logConfig.name = opts.name || 'snapi';
logConfig.streams = opts.log.streams || [
{
path: opts.log.path || './snapi.log',
type: opts.log.type || 'rotating-file',
level: opts.log.level || 'warn',
period: opts.log.period || '1d',
count: opts.log.count || 10
}
];
this.log = new Bunyan(logConfig);
}
}
Logger.prototype.unhandledRejection = function() {
return (function(_this) {
return function(err) {
return _this.log.error({
unhandledRejection: true,
err: err
}, err.message);
};
})(this);
};
Logger.prototype.unhandledProcessException = function() {
return (function(_this) {
return function(err) {
return _this.log.fatal({
unhandledProcessException: true,
err: err
}, err.message);
};
})(this);
};
Logger.prototype.unhandledRestifyException = function() {
return (function(_this) {
return function(req, res, route, err) {
_this.log.error({
unhandledRestifyException: true,
req: req,
res: res,
route: route,
err: err
}, err.message);
if (!res.headersSent) {
return res.send(500, 'Internal server error');
}
};
})(this);
};
return Logger;
})();