12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /**
- * Copyright(c) dead_horse and other contributors.
- * MIT Licensed
- *
- * Authors:
- * dead_horse <dead_horse@qq.com>
- * fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
- */
- 'use strict';
- /**
- * Module dependencies.
- */
- var ready = require('get-ready');
- var EventEmitter = require('events').EventEmitter;
- var util = require('util');
- module.exports = Base;
- function Base() {
- EventEmitter.call(this);
- this.on('error', this.defaultErrorHandler.bind(this));
- }
- /**
- * inherits from EventEmitter
- */
- util.inherits(Base, EventEmitter);
- ready.mixin(Base.prototype);
- Base.prototype.defaultErrorHandler = function (err) {
- if (this.listeners('error').length > 1) {
- // ignore defaultErrorHandler
- return;
- }
- console.error('\n[%s][pid: %s][%s][%s] %s: %s \nError Stack:\n %s',
- Date(), process.pid, this.constructor.name, __filename, err.name,
- err.message, err.stack);
- // try to show addition property on the error object
- // e.g.: `err.data = {url: '/foo'};`
- var additions = [];
- for (var key in err) {
- if (key === 'name' || key === 'message') {
- continue;
- }
- additions.push(util.format(' %s: %j', key, err[key]));
- }
- if (additions.length) {
- console.error('Error Additions:\n%s', additions.join('\n'));
- }
- console.error();
- };
|