Lug.prototype.summary = function()

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);
  }
};