qapinterface
Version:
Comprehensive API utilities for Node.js applications including authentication, security, request processing, and response handling with zero external dependencies
57 lines (50 loc) • 1.83 kB
JavaScript
/**
* Retry Logger
* Single Responsibility: Log retry attempt information ONLY
*/
/**
* Logs retry attempt information
* @param {Error|object} error - Error that caused the retry
* @param {number} attempt - Current attempt number (1-based)
* @param {number} delay - Delay before next attempt in milliseconds
* @param {string} [functionName] - Name of function being retried
*/
function logRetryAttempt(error, attempt, delay, functionName) {
const errorMessage = error?.message || 'Unknown error';
const errorStatus = error?.response?.status || error?.status || 'N/A';
const functionContext = functionName ? ` [${functionName}]` : '';
console.warn(
`Retry attempt ${attempt}${functionContext}: ${errorMessage} ` +
`(status: ${errorStatus}) - retrying in ${delay}ms`
);
}
/**
* Logs final retry failure
* @param {Error|object} error - Final error after all retries
* @param {number} totalAttempts - Total number of attempts made
* @param {string} [functionName] - Name of function that failed
*/
function logRetryFailure(error, totalAttempts, functionName) {
const errorMessage = error?.message || 'Unknown error';
const functionContext = functionName ? ` [${functionName}]` : '';
console.error(
`Retry failed${functionContext}: ${errorMessage} ` +
`after ${totalAttempts} attempts`
);
}
/**
* Logs successful retry recovery
* @param {number} attempt - Attempt number that succeeded (1-based)
* @param {string} [functionName] - Name of function that succeeded
*/
function logRetrySuccess(attempt, functionName) {
const functionContext = functionName ? ` [${functionName}]` : '';
if (attempt > 1) {
console.info(`Retry success${functionContext}: recovered on attempt ${attempt}`);
}
}
module.exports = {
logRetryAttempt,
logRetryFailure,
logRetrySuccess
};