-
Notifications
You must be signed in to change notification settings - Fork 22
/
log.js
67 lines (59 loc) · 1.01 KB
/
log.js
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
var util = require('util')
, log
, _logger
, _levels
, _serialize
, _output;
_levels = {
'debug': 'log'
, 'info': 'log'
, 'notice': 'log'
, 'warning': 'error'
, 'error': 'error'
, 'critical': 'error'
, 'alert': 'error'
, 'emergency': 'error'
};
_serialize = function (obj) {
var out;
if (typeof obj == 'string') {
out = obj;
}
else {
out = util.inspect(obj);
}
return out;
};
_output = function (obj, level) {
var out = _serialize(obj);
if (_logger) {
_logger[level](out);
}
else {
console[_levels[level]](out);
}
};
log = function (obj) {
_output(obj, 'info');
};
log.registerLogger = function (logger) {
// Malkovitch, Malkovitch
if (logger === log) {
return;
}
_logger = logger;
};
(function () {
var level;
for (var p in _levels) {
(function (p) {
level = _levels[p];
log[p] = function (obj) {
_output(obj, p);
};
})(p);
}
// Also handle 'access', not an actual level
log.access = log.info;
})();
module.exports = log;