index.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 'use strict';
  2. var format = require('util').format;
  3. var sparkles = require('sparkles');
  4. var legacySparkles = require('sparkles/legacy');
  5. var levels = ['debug', 'info', 'warn', 'error'];
  6. function getLogger(namespace) {
  7. var logger = sparkles(namespace);
  8. var deprecatedLogger = legacySparkles(namespace);
  9. levels.forEach(function (level) {
  10. logger[level] = makeLogLevel(logger, level);
  11. // Wire up listeners for every level on the deprecated namespace
  12. // If anything gets emitted on this namespace, we'll emit the
  13. // `deprecated` event and re-emit the event on the new logger
  14. deprecatedLogger.on(level, function () {
  15. logger.emit('deprecated');
  16. var args = Array.prototype.slice.call(arguments);
  17. logger[level].apply(logger, args);
  18. });
  19. });
  20. return logger;
  21. }
  22. function makeLogLevel(self, level) {
  23. return function (msg) {
  24. if (typeof msg === 'string') {
  25. self.emit(level, format.apply(null, arguments));
  26. } else {
  27. var args = Array.prototype.slice.call(arguments);
  28. self.emit.apply(self, [level].concat(args));
  29. }
  30. };
  31. }
  32. module.exports = getLogger;