Comparing version 1.1.3 to 1.1.4
@@ -29,3 +29,3 @@ | ||
exports.version = '1.1.3'; | ||
exports.version = '1.1.4'; | ||
@@ -32,0 +32,0 @@ /** |
@@ -44,3 +44,3 @@ | ||
* | ||
* @param {String|Object} format or options | ||
* @param {String|Function|Object} format or options | ||
* @return {Function} | ||
@@ -51,6 +51,8 @@ * @api public | ||
module.exports = function logger(options) { | ||
if ('string' == typeof options) { | ||
if ('object' == typeof options) { | ||
options = options || {}; | ||
} else if (options) { | ||
options = { format: options }; | ||
} else { | ||
options = options || {}; | ||
options = {}; | ||
} | ||
@@ -88,3 +90,2 @@ | ||
, statusCode | ||
, resHeaders | ||
, writeHead = res.writeHead | ||
@@ -104,4 +105,4 @@ , end = res.end | ||
res.writeHead(code, headers); | ||
res._statusCode = statusCode = code; | ||
res._headers = resHeaders = headers || {}; | ||
res.__statusCode = statusCode = code; | ||
res.__headers = headers || {}; | ||
}; | ||
@@ -115,6 +116,16 @@ | ||
res.responseTime = +new Date - start; | ||
stream.write(format(fmt, req, res) + '\n', 'ascii'); | ||
if ('function' == typeof fmt) { | ||
stream.write(fmt(req, res, function(str){ | ||
return format(str, req, res); | ||
}) + '\n', 'ascii'); | ||
} else { | ||
stream.write(format(fmt, req, res) + '\n', 'ascii'); | ||
} | ||
}; | ||
} else { | ||
res.end = function(chunk, encoding) { | ||
var contentLength = (res._headers && res._headers['content-length']) | ||
|| (res.__headers && res.__headers['Content-Length']) | ||
|| '-'; | ||
res.end = end; | ||
@@ -127,3 +138,3 @@ res.end(chunk, encoding); | ||
+ ' HTTP/' + req.httpVersionMajor + '.' + req.httpVersionMinor + '" ' | ||
+ statusCode + ' ' + (resHeaders['Content-Length'] || '-') | ||
+ (statusCode || res.statusCode) + ' ' + contentLength | ||
+ ' "' + (req.headers['referer'] || req.headers['referrer'] || '') | ||
@@ -152,3 +163,3 @@ + '" "' + (req.headers['user-agent'] || '') + '"\n', 'ascii'); | ||
.replace(':method', req.method) | ||
.replace(':status', res._statusCode) | ||
.replace(':status', res.__statusCode || res.statusCode) | ||
.replace(':response-time', res.responseTime) | ||
@@ -160,4 +171,8 @@ .replace(':date', new Date().toUTCString()) | ||
.replace(':user-agent', req.headers['user-agent'] || '') | ||
.replace(/:req\[([^\]]+)\]/g, function(_, header){ return req.headers[header]; }) | ||
.replace(/:res\[([^\]]+)\]/g, function(_, header){ return res._headers[header]; }); | ||
} | ||
.replace(/:req\[([^\]]+)\]/g, function(_, field){ return req.headers[field.toLowerCase()]; }) | ||
.replace(/:res\[([^\]]+)\]/g, function(_, field){ | ||
return res._headers | ||
? (res._headers[field.toLowerCase()] || res.__headers[field]) | ||
: (res.__headers && res.__headers[field]); | ||
}); | ||
} |
{ | ||
"name": "connect", | ||
"version": "1.1.3", | ||
"version": "1.1.4", | ||
"description": "High performance middleware framework", | ||
@@ -5,0 +5,0 @@ "keywords": ["framework", "web", "middleware", "connect", "rack"], |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
76537
2794