-
Notifications
You must be signed in to change notification settings - Fork 139
/
express.ts
40 lines (35 loc) · 1.19 KB
/
express.ts
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
import Client from '../client';
function makeMiddleware(client: Client) {
return function(req, res, next): void {
let start = new Date();
next();
let ms = new Date().getTime() - start.getTime();
client.incRequest(req.method, req.route.path, res.statusCode, start, ms);
};
}
function makeErrorHandler(client: Client) {
return function errorHandler(err: Error, req, _res, next): void {
let url = req.protocol + '://' + req.headers['host'] + req.path;
let notice: any = {
error: err,
context: {
userAddr: req.ip,
userAgent: req.headers['user-agent'],
url: url,
route: req.route.path,
httpMethod: req.method,
component: 'express',
action: req.route.stack[0].name,
},
};
let referer = req.headers['referer'];
if (referer) {
notice.context.referer = referer;
}
client.notify(notice);
next(err);
};
}
(makeErrorHandler as any).makeMiddleware = makeMiddleware;
(makeErrorHandler as any).makeErrorHandler = makeErrorHandler;
export = makeErrorHandler;