const morgan = require('morgan')
...
morgan.token('ip', (req) => req.headers['x-forwarded-for'] || req.connection.remoteAddress);
morgan.token('user', (req) => {
if (req.user) { return req.user.email; }
return 'no user info';
});
morgan.token('team', (req) => {
if (req.user) { return req.user.team; }
return '-';
});
function jsonFormat(tokens, req, res) {
return JSON.stringify({
ip: tokens.ip(req, res),
user: tokens.user(req, res),
team: tokens.team(req, res),
time: tokens.date(req, res, 'iso'),
method: tokens.method(req, res),
url: tokens.url(req, res),
'http-version': tokens['http-version'](req, res),
'status-code': tokens.status(req, res),
'content-length': tokens.res(req, res, 'content-length'),
referrer: tokens.referrer(req, res),
'user-agent': tokens['user-agent'](req, res),
});
}
app.use(morgan(jsonFormat));
...