-
Notifications
You must be signed in to change notification settings - Fork 2
/
custom_report.js
72 lines (60 loc) · 1.81 KB
/
custom_report.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
var express = require('express');
var emt = require('../'); // require('express-middleware-timer');
var app = express();
/***
* Initialize express-timer-middleware w/
* Custom Reporting
***************************************************/
var fs = require('fs');
var format = require('util').format;
app.use(emt.init(function emtReporter(req, res) {
// Write report to file.
var report = emt.calculate(req, res);
var out = format('%s,%s,%s,%s\n',
new Date(),
report.request.url,
report.timers.slowMiddleware.took,
report.timers.fastMiddleware.took);
process.stdout.write(out);
fs.appendFile('emt.log', out, function(err) {
if (err) console.trace(err);
});
/***
* Outputs something like the following...
*
* Sat Dec 14 2013 14:17:00 GMT-0800 (PST),/,202,10
* Sat Dec 14 2013 14:17:02 GMT-0800 (PST),/,201,2
* Sat Dec 14 2013 14:17:03 GMT-0800 (PST),/,200,1
*
* You can also do things like save report to mongo or redis.
*/
}));
/***
* time slow middleware
* - non-anon middleware don't require names
***************************************************/
function slowMiddleware(req, res, next) {
setTimeout(function() {
next();
}, 200);
}
app.use(emt.instrument(slowMiddleware));
/***
* time fast middleware
* - anon middleware require names
***************************************************/
var fastMiddleware = function(req, res, next) {
next();
};
app.use(emt.instrument(fastMiddleware, 'fastMiddleware'));
/***
* Route
***************************************************/
app.get('/', function(req,res) {
res.send('hello world');
});
/***
* Start
***************************************************/
app.listen(3000);
console.log('Listening on port 3000');