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