UNPKG

snapi2

Version:

An API-first RESTful server framework built on Swagger and Restify

92 lines (80 loc) 2.17 kB
// Generated by CoffeeScript 1.12.7 'use strict'; 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; })();