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; |