| 
						 | 
						- /**
 -  * 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();
 - };
 
 
  |