42 lines
1.1 KiB
JavaScript

'use strict';
var format = require('util').format;
var sparkles = require('sparkles');
var legacySparkles = require('sparkles/legacy');
var levels = ['debug', 'info', 'warn', 'error'];
function getLogger(namespace) {
var logger = sparkles(namespace);
var deprecatedLogger = legacySparkles(namespace);
levels.forEach(function (level) {
logger[level] = makeLogLevel(logger, level);
// Wire up listeners for every level on the deprecated namespace
// If anything gets emitted on this namespace, we'll emit the
// `deprecated` event and re-emit the event on the new logger
deprecatedLogger.on(level, function () {
logger.emit('deprecated');
var args = Array.prototype.slice.call(arguments);
logger[level].apply(logger, args);
});
});
return logger;
}
function makeLogLevel(self, level) {
return function (msg) {
if (typeof msg === 'string') {
self.emit(level, format.apply(null, arguments));
} else {
var args = Array.prototype.slice.call(arguments);
self.emit.apply(self, [level].concat(args));
}
};
}
module.exports = getLogger;