Express Integration
Nils edited this page Aug 26, 2014
·
2 revisions
Bragi can easily be integrated into express to log all route requests and errors. The following code assumes Express4.
Here's an example of how to use bragi to log all requests received and responses sent when being called with express:
function logRoute(req,res,next){
req._startTime = new Date();
// Log requests when the request is made
logger.log('express-app',
logger.util.print(logger.util.symbols.arrow, 'yellow') +
logger.util.print(req.method, 'blue') +
' : ' +
logger.util.print(req.url, 'cyan') +
logger.util.print(' making request...', 'grey')
);
var end = res.end;
res.end = function(chunk, encoding) {
res.responseTime = new Date() - req._startTime;
var resTime = '';
if(res.responseTime < 100){
resTime = logger.util.print(res.responseTime + ' ms', 'green');
} else if(res.responseTime < 1000){
resTime = logger.util.print(res.responseTime + ' ms', 'yellow');
} else {
resTime = logger.util.print(res.responseTime + ' ms', 'red');
}
var symbol = logger.util.symbols.success;
var statusCode = logger.util.print(res.statusCode, 'green');
if(res.statusCode >= 400){
symbol = logger.util.symbols.warn;
statusCode = logger.util.print(res.statusCode, 'yellow');
}
if(res.statusCode >= 500){
symbol = logger.util.symbols.error;
statusCode = logger.util.print(res.statusCode, 'red');
}
logger.log('express-app',
symbol +
logger.util.print(req.method, 'blue') +
' : ' +
logger.util.print(req.url, 'cyan') +
' ' +
statusCode + ' ' +
'(' + resTime + ') ' +
logger.util.print(' request completed!', 'grey')
);
res.end = end;
res.end(chunk, encoding);
};
next();
}
// elsewhere, have the express app use this:
app.use(logRoute);