laas-admin-api
Version:
LaaS admin api server.
49 lines (44 loc) • 1.42 kB
JavaScript
(function () {
'use strict';
var uuid = require('node-uuid').v4;
var clone = require('clone-deep');
module.exports = exports = function (name) {
var cluster = require('cluster'), master = cluster.isMaster;
var bunyan = require('bunyan');
var logger = bunyan.createLogger({
name: name || require('../package.json').name,
level: 'info',
master: master || void 0,
worker: master ? void 0 : cluster.worker.id,
serializers: { req: reqSerializer, res: bunyan.stdSerializers.res, err: bunyan.stdSerializers.err }
});
console.error = logger.error.bind(logger);
console.log = logger.info.bind(logger);
console.warn = logger.warn.bind(logger);
logger.middleware = middleware;
return logger;
};
function middleware () {
return function (req, res, next) {
var end = res.end;
req.requestId = uuid();
res.setHeader('x-request-id', req.requestId);
console.log({ req: req }, 'Http request received');
res.end = function () {
end.apply(res, arguments);
console.log({ req: req, res: res }, 'Http request handled');
};
next();
}
}
function reqSerializer(req) {
var serialised = clone({
method: req.method,
url: req.url,
headers: req.headers,
ip: req.ip
});
if (serialised.headers) delete serialised.headers.authorization;
return serialised;
}
})();