3bbf5c279933e20db210a69e027fdddbdd06f855c9e997e963f93994a9a2257f2ed17caae226c20d75062cc412b4e3b422738913ccace77d854c21ce533b75 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. 'use strict';
  2. /* global window: true */
  3. /* eslint-disable
  4. no-shadow,
  5. no-param-reassign,
  6. space-before-function-paren
  7. */
  8. const LogLevel = require('./LogLevel');
  9. const MethodFactory = require('./MethodFactory');
  10. const PrefixFactory = require('./PrefixFactory');
  11. const defaultLogger = new LogLevel({ name: 'default' });
  12. const cache = { default: defaultLogger };
  13. // Grab the current global log variable in case of overwrite
  14. const existing = (typeof window !== 'undefined') ? window.log : null;
  15. const loglevel = Object.assign(defaultLogger, {
  16. get factories() {
  17. return {
  18. MethodFactory,
  19. PrefixFactory
  20. };
  21. },
  22. get loggers() {
  23. return cache;
  24. },
  25. getLogger(options) {
  26. if (typeof options === 'string') {
  27. options = { name: options };
  28. }
  29. if (!options.id) {
  30. options.id = options.name;
  31. }
  32. const { name, id } = options;
  33. const defaults = { level: defaultLogger.level };
  34. if (typeof name !== 'string' || !name || !name.length) {
  35. throw new TypeError('You must supply a name when creating a logger');
  36. }
  37. let logger = cache[id];
  38. if (!logger) {
  39. logger = new LogLevel(Object.assign({}, defaults, options));
  40. cache[id] = logger;
  41. }
  42. return logger;
  43. },
  44. noConflict() {
  45. if (typeof window !== 'undefined' && window.log === defaultLogger) {
  46. window.log = existing;
  47. }
  48. return defaultLogger;
  49. }
  50. });
  51. module.exports = loglevel;