aboutsummaryrefslogtreecommitdiff
path: root/lib/loggers/console.js
blob: e8f4d86f4cac8c45c7709b87dba3b81aef50eed8 (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
(function (global) {
  var Module, Class;

  // Load up dependencies
  if (typeof require === 'function') {
    var Ne = require('neon');
    Module = Ne.Module;
    Class = Ne.Class;
  } else {
    Module = global.Module;
    Class = global.Class;
  }

  var Cobalt = {};
  Module(Cobalt, 'Logger')({});

  Cobalt.Logger.JsConsole = Class(Cobalt.Logger, 'JsConsole')({
    prototype : {
      console : null,
      formatterOpts : {},

      init : function (config) {
        var logger = this,
            property;

        if (config) {
          for (property in config) {
            logger[property] = config[property];
          }
        }

        if (!logger.console) {
          logger.console = console;
        }
      },

      log : function () {
        var i, message = [], severity;

        for (i = 0; i < arguments.length; i++) {
          // We're not formatting objects for now.

          if (typeof arguments[i].message === 'object') {
            message.push(arguments[i].message);
          } else {
            message.push(this.format(arguments[i]));
          }
          if (!severity) {
            severity = arguments[i]._level
          }
        }

        switch (severity){
          case 0:
          case 1:
          case 2:
          case 3:
            this.console.error.apply(this.console, message);
            break;
          case 4:
            this.console.warn.apply(this.console, message);
            break;
          case 5:
          case 6:
            this.console.info.apply(this.console, message);
            break;
          case 7:
          default:
            this.console.log.apply(this.console, message);
            break;
        }
      },

      format : function (logObject) {
        // Usually what you want to do here is format. Preferably using
        // someone inside Cobalt.Formatter
        if (this.formatter) {
          return this.formatter.format(logObject, this.formatterOpts);
        }

        return logObject.message;
      }
    }
  });

  if (Cobalt.Logger.JsConsole.__objectSpy) {
    Cobalt.Logger.JsConsole.__objectSpy.destroy();
  }

  if (typeof require === 'function') {
    global.JsConsole = Cobalt.Logger.JsConsole;
  } else {
    global.Cobalt.Logger.JsConsole = Cobalt.Logger.JsConsole;
  }
}(typeof window !== 'undefined' ? window : (typeof exports !== 'undefined' ? exports : self)));