59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var fancyLog = require('fancy-log');
|
|
|
|
/* istanbul ignore next */
|
|
function noop() {}
|
|
|
|
// The sorting of the levels is
|
|
// significant.
|
|
var levels = [
|
|
'error', // -L: Logs error events.
|
|
'warn', // -LL: Logs warn and error events.
|
|
'info', // -LLL: Logs info, warn and error events.
|
|
'debug', // -LLLL: Logs all log levels.
|
|
];
|
|
|
|
function cleanup(log) {
|
|
levels.forEach(removeListeners);
|
|
|
|
function removeListeners(level) {
|
|
if (level === 'error') {
|
|
log.removeListener(level, noop);
|
|
log.removeListener(level, fancyLog.error);
|
|
} else {
|
|
log.removeListener(level, fancyLog);
|
|
}
|
|
}
|
|
}
|
|
|
|
function toConsole(log, opts) {
|
|
// Remove previous listeners to enable to call this twice.
|
|
cleanup(log);
|
|
|
|
// Return immediately if logging is
|
|
// not desired.
|
|
if (opts.tasksSimple || opts.tasksJson || opts.help || opts.version || opts.silent) {
|
|
// Keep from crashing process when silent.
|
|
log.on('error', noop);
|
|
return;
|
|
}
|
|
|
|
// Default loglevel to info level (3).
|
|
var loglevel = opts.logLevel || 3;
|
|
|
|
levels
|
|
.filter(function(item, i) {
|
|
return i < loglevel;
|
|
})
|
|
.forEach(function(level) {
|
|
if (level === 'error') {
|
|
log.on(level, fancyLog.error);
|
|
} else {
|
|
log.on(level, fancyLog);
|
|
}
|
|
});
|
|
}
|
|
|
|
module.exports = toConsole;
|