UNPKG

@inventorjs/api-service

Version:
51 lines (50 loc) 1.82 kB
import { getFinalURL } from './util.js'; export function writeLog({ config, response, responseTime, reqId, error, }) { const extConfig = config.$ext; const loggerConfig = extConfig?.logger; if (!loggerConfig) { return; } const logger = loggerConfig.logger; let level = 'log'; const finalURL = getFinalURL(config); const finalURLObj = new URL(finalURL); const eventKey = loggerConfig?.customAttributeKeys?.event ?? 'event'; const reqKey = loggerConfig?.customAttributeKeys?.req ?? 'req'; const resKey = loggerConfig?.customAttributeKeys?.res ?? 'res'; const responseTimeKey = loggerConfig?.customAttributeKeys?.responseTime ?? 'responseTime'; const eventSuccess = loggerConfig?.customEventName?.success ?? 'api-success'; const eventError = loggerConfig?.customEventName?.error ?? 'api-error'; const logData = { [eventKey]: eventSuccess, [reqKey]: { id: reqId, url: finalURL, method: config.method, query: config.params, params: extConfig?.params, headers: config.headers.toJSON(), pathname: finalURLObj.pathname, body: config.data, }, [resKey]: { statusCode: response?.status ?? 0, statusText: response?.statusText ?? '', headers: response?.headers?.toJSON?.() ?? response?.headers, body: response?.data, }, [responseTimeKey]: responseTime, }; if (error) { level = 'error'; Object.assign(logData, { event: eventError, err: { code: error.code ?? 0, message: error.message ?? '', stack: error.stack ?? '', }, }); } logger[level](logData); }