-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
70 lines (60 loc) · 1.53 KB
/
index.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
68
69
var Logger = require('bunyan')
module.exports = function(opts) {
if (!opts) { opts = {} }
var log = new Logger({
name: opts.name || "Logger",
level: opts.loggingLevel || "info",
streams: opts.streams || [ { type: 'stream', stream: process.stderr } ],
serializers: {
req: Logger.stdSerializers.req,
res: resSerializer
}
});
if (!opts.style || !opts.style.match(/bunyan/i)) {
swapArgOrder()
}
log.silent = silent
return log
function silent(shouldBeSilent) {
if (shouldBeSilent && !this.originalStreams) {
this.originalStreams = this.streams
var ringbuffer = new Logger.RingBuffer({ limit: 1 });
this.streams = [ringbuffer]
return
}
if (shouldBeSilent === false) {
if (!this.originalStreams) { return }
this.streams = this.originalStreams
this.originalStreams = null
return
}
}
function resSerializer(res) {
return {
statusCode: res.statusCode,
headers: res.headers()
}
}
function swapArgOrder() {
[
"fatal",
"error",
"warn",
"info",
"debug",
"trace",
].forEach(function(fnName) {
log[fnName] = (function(fn) {
var originalFn = log[fn]
return function() {
if (arguments.length < 2) { return originalFn.apply(log, arguments) }
var args = Array.prototype.slice.call(arguments)
var tmp = args[0]
args[0] = args[1]
args[1] = tmp
originalFn.apply(log, args)
}
}(fnName))
})
}
}