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.
58 lines
1.3 KiB
58 lines
1.3 KiB
'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;
|
|
|