You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					83 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					83 lines
				
				1.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								var colour = require('./colour');
							 | 
						||
| 
								 | 
							
								var bus = require('./bus');
							 | 
						||
| 
								 | 
							
								var required = false;
							 | 
						||
| 
								 | 
							
								var useColours = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var coding = {
							 | 
						||
| 
								 | 
							
								  log: 'black',
							 | 
						||
| 
								 | 
							
								  info: 'yellow',
							 | 
						||
| 
								 | 
							
								  status: 'green',
							 | 
						||
| 
								 | 
							
								  detail: 'yellow',
							 | 
						||
| 
								 | 
							
								  fail: 'red',
							 | 
						||
| 
								 | 
							
								  error: 'red',
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function log(type, text) {
							 | 
						||
| 
								 | 
							
								  var msg = '[nodemon] ' + (text || '');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (useColours) {
							 | 
						||
| 
								 | 
							
								    msg = colour(coding[type], msg);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // always push the message through our bus, using nextTick
							 | 
						||
| 
								 | 
							
								  // to help testing and get _out of_ promises.
							 | 
						||
| 
								 | 
							
								  process.nextTick(() => {
							 | 
						||
| 
								 | 
							
								    bus.emit('log', { type: type, message: text, colour: msg });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // but if we're running on the command line, also echo out
							 | 
						||
| 
								 | 
							
								  // question: should we actually just consume our own events?
							 | 
						||
| 
								 | 
							
								  if (!required) {
							 | 
						||
| 
								 | 
							
								    if (type === 'error') {
							 | 
						||
| 
								 | 
							
								      console.error(msg);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      console.log(msg || '');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var Logger = function (r) {
							 | 
						||
| 
								 | 
							
								  if (!(this instanceof Logger)) {
							 | 
						||
| 
								 | 
							
								    return new Logger(r);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.required(r);
							 | 
						||
| 
								 | 
							
								  return this;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.keys(coding).forEach(function (type) {
							 | 
						||
| 
								 | 
							
								  Logger.prototype[type] = log.bind(null, type);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// detail is for messages that are turned on during debug
							 | 
						||
| 
								 | 
							
								Logger.prototype.detail = function (msg) {
							 | 
						||
| 
								 | 
							
								  if (this.debug) {
							 | 
						||
| 
								 | 
							
								    log('detail', msg);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Logger.prototype.required = function (val) {
							 | 
						||
| 
								 | 
							
								  required = val;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Logger.prototype.debug = false;
							 | 
						||
| 
								 | 
							
								Logger.prototype._log = function (type, msg) {
							 | 
						||
| 
								 | 
							
								  if (required) {
							 | 
						||
| 
								 | 
							
								    bus.emit('log', { type: type, message: msg || '', colour: msg || '' });
							 | 
						||
| 
								 | 
							
								  } else if (type === 'error') {
							 | 
						||
| 
								 | 
							
								    console.error(msg);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    console.log(msg || '');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(Logger.prototype, 'useColours', {
							 | 
						||
| 
								 | 
							
								  set: function (val) {
							 | 
						||
| 
								 | 
							
								    useColours = val;
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return useColours;
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = Logger;
							 |