-
Notifications
You must be signed in to change notification settings - Fork 8
/
log.js
32 lines (32 loc) · 979 Bytes
/
log.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
// A super simple logging middleware
module.exports = function setup(special) {
special = special || {
"Content-Type": true,
"Location": true,
"Content-Length": true,
"Content-Range": true,
};
return function handle(req, res, next) {
var writeHead = res.writeHead;
var start = Date.now();
res.writeHead = function (code, headers) {
var extra = [];
if (headers) {
Object.keys(headers).forEach(function (key) {
if (special.hasOwnProperty(key)) {
extra.push(key + "=" + headers[key]);
}
});
if (!headers.hasOwnProperty('Date')) {
headers.Date = (new Date()).toUTCString();
}
headers.Server = "NodeJS " + process.version;
headers["X-Runtime"] = Date.now() - start;
}
console.log("%s %s %s %s", req.method, req.url, code, extra.join(" "));
res.writeHead = writeHead;
res.writeHead(code, headers);
};
next();
};
};