X Enterprises
fastify-xlogger

logBoundary(params)

Log an external API call with vendor, operation, duration, and outcome.

logBoundary(params)

Logs a single external API call at the boundary.call event. Level is info on success and error on failure. Request context is merged in when provided. For automatic duration capture, prefer createBoundaryLogger.

Signature

fastify.xLogger.logBoundary(params: {
  vendor: string
  operation: string
  externalId?: string
  durationMs?: number
  statusCode?: number
  success?: boolean
  retryCount?: number
  metadata?: Record<string, unknown>
  err?: Error
  request?: FastifyRequest
}): void

Params

NameTypeRequiredDefaultDescription
vendorstringYes—External service name (e.g. "stripe", "sendgrid")
operationstringYes—Operation name (e.g. "createCustomer", "sendEmail")
externalIdstringNo—External resource ID returned by the vendor
durationMsnumberNo—Call duration in milliseconds
statusCodenumberNo—HTTP response status code from the vendor
successbooleanNotrueWhether the call succeeded
retryCountnumberNo—Number of retries attempted
metadataobjectNo{}Additional non-sensitive metadata
errErrorNo—Error object on failure
requestFastifyRequestNonullRequest context to merge in

Returns

void

Throws

  • Error: [xLogger] logBoundary requires a string 'vendor' parameter — vendor is missing
  • Error: [xLogger] logBoundary requires a string 'operation' parameter — operation is missing

Examples

Log a successful Stripe call

const start = Date.now();
const customer = await stripe.customers.create({ email: user.email });

fastify.xLogger.logBoundary({
  vendor: "stripe",
  operation: "createCustomer",
  externalId: customer.id,
  durationMs: Date.now() - start,
  statusCode: 200,
  request,
});

Log a failed SendGrid call

try {
  await sgMail.send(message);
} catch (err) {
  fastify.xLogger.logBoundary({
    vendor: "sendgrid",
    operation: "sendEmail",
    durationMs: Date.now() - start,
    success: false,
    statusCode: err.response?.status,
    err,
    request,
  });
  throw err;
}

See also

AI Context

package: "@xenterprises/fastify-xlogger"
method: fastify.xLogger.logBoundary(params)
use-when: Log a single external API call with vendor, operation, duration, and outcome — use createBoundaryLogger instead when you want automatic duration tracking
params: vendor (required), operation (required), externalId, durationMs, statusCode, success, retryCount, metadata, err, request
returns: void
Copyright © 2026