Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 50 additions & 41 deletions lib/utils/log.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
var colour = require('./colour');
var bus = require('./bus');
var required = false;
var useColours = true;
'use strict';

var coding = {
const colour = require('./colour');
const bus = require('./bus');

let required = false;
let useColours = true;

const coding = {
log: 'black',
info: 'yellow',
status: 'green',
Expand All @@ -13,7 +16,7 @@ var coding = {
};

function log(type, text) {
var msg = '[nodemon] ' + (text || '');
let msg = `[nodemon] ${text || ''}`;

if (useColours) {
msg = colour(coding[type], msg);
Expand All @@ -22,11 +25,10 @@ function log(type, text) {
// 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 });
bus.emit('log', { 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);
Expand All @@ -36,47 +38,54 @@ function log(type, text) {
}
}

var Logger = function (r) {
if (!(this instanceof Logger)) {
return new Logger(r);
class Logger {
constructor(r) {
this.required(r);
}
this.required(r);
return this;
};

Object.keys(coding).forEach(function (type) {
Logger.prototype[type] = log.bind(null, type);
});
required(val) {
required = val;
}

// detail is for messages that are turned on during debug
Logger.prototype.detail = function (msg) {
if (this.debug) {
log('detail', msg);
_log(type, msg) {
if (required) {
bus.emit('log', { type, message: msg || '', colour: msg || '' });
} else if (type === 'error') {
console.error(msg);
} else {
console.log(msg || '');
}
}
};

Logger.prototype.required = function (val) {
required = val;
};
// detail is for messages that are turned on during debug
detail(msg) {
if (this.debug) {
log('detail', msg);
}
}

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 || '');
get useColours() {
return useColours;
}
};

Object.defineProperty(Logger.prototype, 'useColours', {
set: function (val) {
set useColours(val) {
useColours = val;
},
get: function () {
return useColours;
},
}
}

// Add dynamic methods for each coding type
Object.keys(coding).forEach((type) => {
Logger.prototype[type] = log.bind(null, type);
});

module.exports = Logger;
Logger.prototype.debug = false;

module.exports = function (r) {
if (!(this instanceof Logger)) {
return new Logger(r);
}
this.required(r);
return this;
};

module.exports.Logger = Logger;