forked from Download/ulog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
debug.js
65 lines (56 loc) · 1.44 KB
/
debug.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
var ulog = require('./')
ulog.formats.push(format);
module.exports = ulog;
function format(logger, method, args) {
var t = new Date().getTime(),
p = format.prev && format.prev.t || t
format.prev = { t }
args.unshift(
time(t,1,1,1),
diff(t,p),
name(logger.name)
)
}
function time(t,h,m,s){
var d = new Date(t)
return '' +
(h ? pad(LEFT, d.getHours(), 2, '0') + (m || s ? ':' : '') : '') +
(m ? pad(LEFT, d.getMinutes(), 2, '0') + (s ? ':' : '') : '') +
(s ? pad(LEFT, d.getSeconds(), 2, '0') : '')
}
function diff(t,p) {
var d = new Date(t - p),
days = d.getUTCDate() - 1,
h = d.getUTCHours(),
m = d.getUTCMinutes(),
s = d.getUTCSeconds(),
f = Math.floor,
ms = (t - p - s*1000)
return pad(LEFT, (
t-p<1000?(t-p>10? '.' + pad(LEFT, f((t-p)/10), 2, '0') : '') : // ms
days ? days + 'd' + pad(LEFT, h, 2, '0') :
h ? h + 'h' + pad(LEFT, m, 2, '0') :
m ? m + 'm' + pad(LEFT, s, 2, '0') :
s ? s + '.' + pad(LEFT, f(ms/10), 2, '0') :
''
), 5)
}
function name(n) {
return pad(RIGHT, n.substring(0, 24), 24)
}
var LEFT=1,
RIGHT=0
function pad(s,x,l,p) {
x = String(x)
p = p || ' '
if (x.length > l || (s && x.length == l)) return x
l -= x.length
p = (p + repeat(p, l / p.length)).slice(0,l)
return (s?p:'') + x + (s?'':p);
}
function repeat(x,c,s) {
if (!x.length || !c) return ''
s = ''
while(c>0) {s+=x; c--}
return s;
}