Blame view

node_modules/webpack-bundle-analyzer/src/Logger.js 1014 Bytes
2a09d1a4   liuqimichale   添加宜春 天水 宣化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  const LEVELS = [
    'debug',
    'info',
    'warn',
    'error',
    'silent'
  ];
  
  const LEVEL_TO_CONSOLE_METHOD = new Map([
    ['debug', 'log'],
    ['info', 'log'],
    ['warn', 'log']
  ]);
  
  class Logger {
  
    static levels = LEVELS;
    static defaultLevel = 'info';
  
    constructor(level = Logger.defaultLevel) {
      this.activeLevels = new Set();
      this.setLogLevel(level);
    }
  
    setLogLevel(level) {
      const levelIndex = LEVELS.indexOf(level);
  
      if (levelIndex === -1) throw new Error(`Invalid log level "${level}". Use one of these: ${LEVELS.join(', ')}`);
  
      this.activeLevels.clear();
  
      for (const [i, level] of LEVELS.entries()) {
        if (i >= levelIndex) this.activeLevels.add(level);
      }
    }
  
    _log(level, ...args) {
      console[LEVEL_TO_CONSOLE_METHOD.get(level) || level](...args);
    }
  
  };
  
  LEVELS.forEach(level => {
    if (level === 'silent') return;
  
    Logger.prototype[level] = function (...args) {
      if (this.activeLevels.has(level)) this._log(level, ...args);
    };
  });
  
  module.exports = Logger;