in packages/fxa-auth-server/lib/log.js [133:204]
Lug.prototype.summary = function (request, response) {
if (request.method === 'options') {
return;
}
request.emitRouteFlowEvent(response);
const payload = request.payload || {};
const query = request.query || {};
const credentials = (request.auth && request.auth.credentials) || {};
const responseBody = (response && response.source) || {};
const line = {
status: response.isBoom ? response.output.statusCode : response.statusCode,
errno: response.errno || (response.source && response.source.errno) || 0,
rid: request.id,
path: request.path,
lang: request.app.acceptLanguage,
agent: request.headers['user-agent'],
remoteAddressChain: request.app.remoteAddressChain,
accountRecreated: request.app.accountRecreated,
t: Date.now() - request.info.received,
uid:
credentials.uid ||
payload.uid ||
query.uid ||
response.uid ||
responseBody.uid ||
'00',
service: payload.service || query.service,
reason: payload.reason || query.reason,
redirectTo: payload.redirectTo || query.redirectTo,
keys: !!query.keys,
// Additional data used by the DataFlow fraud detection pipeline.
// Logging PII for the fraud detection pipeline has been given
// the green light so that the fraud detection logic can
// handle much of the logic the customs server currently does.
method: request.method,
email: credentials.email || payload.email || query.email,
phoneNumber: responseBody.formattedPhoneNumber,
};
// TODO: Remove after debugging mysterious empty response body reported in FXA-6573
// is complete.
if (
config.env !== 'prod' &&
line.status === 400 &&
line.path === '/v1/session/verify_code'
) {
try {
const body = JSON.stringify(responseBody);
this.info('request.summary.debug', {
body,
bodySize: body.length,
});
} catch (error) {
this.info('request.summary.debug', {
bodySize: -1,
error,
});
}
}
if (line.status >= 500) {
line.trace = request.app.traced;
line.stack = response.stack;
this.error('request.summary', line);
} else {
this.info('request.summary', line);
}
};