--- /dev/null
+'use strict';
+
+var loglevel = require('loglevel');
+var chalk = require('chalk');
+
+var loggers = {};
+
+module.exports = getLogger;
+
+function getLogger() {
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+ _ref$level = _ref.level,
+ level = _ref$level === undefined ? getDefaultLevel() : _ref$level,
+ _ref$prefix = _ref.prefix,
+ prefix = _ref$prefix === undefined ? '' : _ref$prefix;
+
+ if (loggers[prefix]) {
+ return loggers[prefix];
+ }
+ var coloredPrefix = prefix ? `${chalk.dim(prefix)} ` : '';
+ var levelPrefix = {
+ TRACE: chalk.dim('[TRACE]'),
+ DEBUG: chalk.cyan('[DEBUG]'),
+ INFO: chalk.blue('[INFO]'),
+ WARN: chalk.yellow('[WARN]'),
+ ERROR: chalk.red('[ERROR]')
+ };
+
+ var logger = loglevel.getLogger(`${prefix}-logger`);
+
+ // this is the plugin "api"
+ var originalFactory = logger.methodFactory;
+ logger.methodFactory = methodFactory;
+
+ var originalSetLevel = logger.setLevel;
+ logger.setLevel = setLevel;
+ logger.setLevel(level);
+ loggers[prefix] = logger;
+ return logger;
+
+ function methodFactory() {
+ for (var _len = arguments.length, factoryArgs = Array(_len), _key = 0; _key < _len; _key++) {
+ factoryArgs[_key] = arguments[_key];
+ }
+
+ var logLevel = factoryArgs[0];
+
+ var rawMethod = originalFactory.apply(undefined, factoryArgs);
+ return function () {
+ for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ return rawMethod.apply(undefined, [`${coloredPrefix}${levelPrefix[logLevel.toUpperCase()]}:`].concat(args));
+ };
+ }
+
+ function setLevel(levelToSetTo) {
+ var persist = false; // uses browser localStorage
+ return originalSetLevel.call(logger, levelToSetTo, persist);
+ }
+}
+
+function getDefaultLevel() {
+ var logLevel = process.env.LOG_LEVEL;
+
+ if (logLevel === 'undefined' || !logLevel) {
+ return 'warn';
+ }
+ return logLevel;
+}
\ No newline at end of file