-
Notifications
You must be signed in to change notification settings - Fork 1
/
json.js
93 lines (78 loc) · 1.91 KB
/
json.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
var EE = require("events").EventEmitter;
var LoggerFactory = require("../factory");
var StreamHandler = require("../handlers").StreamHandler;
var jsonFormat = require("../json-format");
var bunyan = require("bunyan");
var pino = require("pino");
var pinoLogger = pino({ timestamp: pino.stdTimeFunctions.slowTime });
var pinoLoggerFast = pino({});
var stdout = new EE();
stdout.write = function(out, encoding, cb) {
if (typeof encoding === "function") {
cb = encoding;
encoding = null;
}
cb && cb();
return true;
};
var f1 = new LoggerFactory({ handlerConstructor: StreamHandler });
var l1 = f1.get("a");
f1
.handler("a")
.setStream(stdout)
.setFormat(
jsonFormat({
timestamp: function(t) {
return t;
}
})
);
var l2 = f1.get("b");
f1
.handler("b")
.setStream(stdout)
.setFormat(jsonFormat());
var l3 = f1.get("c");
var l4 = f1.get("e");
f1
.handler("e")
.setStream(stdout)
.setShouldFormat(false)
.setFormat(jsonFormat());
var log = bunyan.createLogger({ name: "lr", level: "debug" });
process.stdout.write = function(msg, enc, callback) {
if (typeof enc === "function" && !callback) callback = enc;
callback && callback();
return true;
};
var Benchmark = require("benchmark");
var suite = new Benchmark.Suite("logging.info()");
suite
.add("huzzah-fast-time.info json format", function() {
l1.info("asdf");
})
.add("huzzah.info json format", function() {
l2.info("asdf");
})
.add("huzzah.info empty", function() {
l3.info("asdf");
})
.add("huzzah.info no format", function() {
l4.info("asdf");
})
.add("bunyan.info", function() {
log.info("asdf");
})
.add("pino.info", function() {
pinoLogger.info("asdf");
})
.add("pino-fast-time.info", function() {
pinoLoggerFast.info("asdf");
});
suite
// add listeners
.on("cycle", function(event) {
console.warn(String(event.target));
})
// run async
.run();