File size: 1,529 Bytes
5fae594
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
(function () {
  'use strict';

  var ansi = {
    'reset':      'colors: black',
    'bold':       'font-weight: bold',
    'italic':     'font-style: italic',
    'underline':  'text-decoration: underline',
    'black':      'color: #000',
    'red':        'color: red',
    'green':      'color: green',
    'yellow':     'color: yellow',
    'blue':       'color: blue',
    'magenta':    'color: magenta',
    'cyan':       'color: cyan',
    'white':      'color: white'
  };

  var enabled = true;

  var serialize = function (args) {
    var string = '';
    args.forEach(function (value) {
      string += ' ';
      if (typeof value === 'string') {
        string += value;
      } else {
        string += JSON.stringify(value, null, 4);
      }
    });
    return string;
  };

  var createLogger = function (name, color) {

    var prefix = '%c' + '[' + name + ']' + '%c';
    var style = color ? ansi[color] ? ansi[color] : color : '';

    var log = function () {
      if (! enabled) return;
      var args = __slice.call(arguments, 0);
      var contents = serialize(args);
      console.log(prefix + contents, style, ansi.reset);
    };

    log.warn = color === 'red' ? log : createLogger(name, 'red');

    return log;

  };

  createLogger.enable = function() {
    enabled = true;
  };

  createLogger.disable = function () {
    enabled = false;
  };

  createLogger.colors = ansi;

  if (typeof module !== 'undefined') {
    module.exports = createLogger;
  }

  this.Log = createLogger;

}).call(this);