-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuffer.js
More file actions
50 lines (44 loc) · 1.1 KB
/
buffer.js
File metadata and controls
50 lines (44 loc) · 1.1 KB
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
var buff = {
verbose: { data: [], size: 0 },
sys: { data: [], size: 0 },
debug: { data: [], size: 0 },
trace: { data: [], size: 0 },
info: { data: [], size: 0 },
warn: { data: [], size: 0 },
error: { data: [], size: 0 },
fatal: { data: [], size: 0 }
};
// default 8 KB
var limit = 8192;
module.exports.setup = function (size) {
if (size !== undefined && size !== null) {
limit = size;
}
};
module.exports.add = function (level, msg) {
buff[level].data.push({
msg: msg.message,
time: msg.timestamp
});
buff[level].size += Buffer.byteLength(msg.message);
if (buff[level].size > limit) {
return module.exports.flush(level);
}
return null;
};
module.exports.flush = function (level) {
if (buff[level].size) {
var data = buff[level].data;
buff[level].data = [];
buff[level].size = 0;
return data;
}
return null;
};
module.exports.flushAll = function () {
var flushed = {};
for (var level in buff) {
flushed[level] = module.exports.flush(level);
}
return flushed;
};