aboutsummaryrefslogtreecommitdiff
path: root/lib/loggers/console.js
blob: c4031eb2e8c86ebed909bd4d3bf4df2cf1aa9c05 (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
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 (!arguments[i].__skipConsole && !arguments[i].message.__skipConsole) {
          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;
    }
  }
});