Skip to content

Instantly share code, notes, and snippets.

@Stanback
Last active November 18, 2015 17:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Stanback/cceff23186ff1e798c18 to your computer and use it in GitHub Desktop.
Save Stanback/cceff23186ff1e798c18 to your computer and use it in GitHub Desktop.
Request logger middleware example using winston logger
// To use:
// server.use(requestLogger);
function requestLogger(req, res, next) {
req._startTime = new Date();
var logRequest = function() {
res.removeListener('finish', logRequest);
res.removeListener('close', logRequest);
var status = res.headersSent && res.statusCode || null;
var userAgent = req.headers['user-agent'];
var contentLength = req.connection.bytesWritten || null;
var respTime = parseInt(Date.now() - req._startTime.getTime());
return winLogger.info(req.method + ' ' + req.url + ' ' + (status || '-') + ' ' + (contentLength || '-') + ' - ' + respTime + ' ms', {
request: {
userAgent: userAgent,
url: req.url,
method: req.method
},
response: {
status: status,
contentLength: contentLength,
respTime: respTime
}
});
};
res.on('finish', logRequest);
res.on('close', logRequest);
return next();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment