aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
118 lines • 12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SdkToCliLogger = void 0;
exports.formatSdkLoggerContent = formatSdkLoggerContent;
const util_1 = require("util");
const logging_1 = require("../../logging");
const serialize_1 = require("../../serialize");
class SdkToCliLogger {
trace(..._content) {
// This is too much detail for our logs
// trace('[SDK trace] %s', fmtContent(content));
}
debug(..._content) {
// This is too much detail for our logs
// trace('[SDK debug] %s', fmtContent(content));
}
/**
* Info is called mostly (exclusively?) for successful API calls
*
* Payload:
*
* (Note the input contains entire CFN templates, for example)
*
* ```
* {
* clientName: 'S3Client',
* commandName: 'GetBucketLocationCommand',
* input: {
* Bucket: '.....',
* ExpectedBucketOwner: undefined
* },
* output: { LocationConstraint: 'eu-central-1' },
* metadata: {
* httpStatusCode: 200,
* requestId: '....',
* extendedRequestId: '...',
* cfId: undefined,
* attempts: 1,
* totalRetryDelay: 0
* }
* }
* ```
*/
info(...content) {
(0, logging_1.trace)('[sdk info] %s', formatSdkLoggerContent(content));
}
warn(...content) {
(0, logging_1.trace)('[sdk warn] %s', formatSdkLoggerContent(content));
}
/**
* Error is called mostly (exclusively?) for failing API calls
*
* Payload (input would be the entire API call arguments).
*
* ```
* {
* clientName: 'STSClient',
* commandName: 'GetCallerIdentityCommand',
* input: {},
* error: AggregateError [ECONNREFUSED]:
* at internalConnectMultiple (node:net:1121:18)
* at afterConnectMultiple (node:net:1688:7) {
* code: 'ECONNREFUSED',
* '$metadata': { attempts: 3, totalRetryDelay: 600 },
* [errors]: [ [Error], [Error] ]
* },
* metadata: { attempts: 3, totalRetryDelay: 600 }
* }
* ```
*/
error(...content) {
(0, logging_1.trace)('[sdk error] %s', formatSdkLoggerContent(content));
}
}
exports.SdkToCliLogger = SdkToCliLogger;
/**
* This can be anything.
*
* For debug, it seems to be mostly strings.
* For info, it seems to be objects.
*
* Stringify and join without separator.
*/
function formatSdkLoggerContent(content) {
if (content.length === 1) {
const apiFmt = formatApiCall(content[0]);
if (apiFmt) {
return apiFmt;
}
}
return content.map((x) => typeof x === 'string' ? x : (0, util_1.inspect)(x)).join('');
}
function formatApiCall(content) {
if (!isSdkApiCallSuccess(content) && !isSdkApiCallError(content)) {
return undefined;
}
const service = content.clientName.replace(/Client$/, '');
const api = content.commandName.replace(/Command$/, '');
const parts = [];
if ((content.metadata?.attempts ?? 0) > 1) {
parts.push(`[${content.metadata?.attempts} attempts, ${content.metadata?.totalRetryDelay}ms retry]`);
}
parts.push(`${service}.${api}(${JSON.stringify(content.input, serialize_1.replacerBufferWithInfo)})`);
if (isSdkApiCallSuccess(content)) {
parts.push('-> OK');
}
else {
parts.push(`-> ${content.error}`);
}
return parts.join(' ');
}
function isSdkApiCallSuccess(x) {
return x && typeof x === 'object' && x.commandName && x.output;
}
function isSdkApiCallError(x) {
return x && typeof x === 'object' && x.commandName && x.error;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNkay1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUZBLHdEQVFDO0FBN0ZELCtCQUErQjtBQUUvQiwyQ0FBc0M7QUFDdEMsK0NBQXlEO0FBRXpELE1BQWEsY0FBYztJQUNsQixLQUFLLENBQUMsR0FBRyxRQUFlO1FBQzdCLHVDQUF1QztRQUN2QyxnREFBZ0Q7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLFFBQWU7UUFDN0IsdUNBQXVDO1FBQ3ZDLGdEQUFnRDtJQUNsRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMEJHO0lBQ0ksSUFBSSxDQUFDLEdBQUcsT0FBYztRQUMzQixJQUFBLGVBQUssRUFBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sSUFBSSxDQUFDLEdBQUcsT0FBYztRQUMzQixJQUFBLGVBQUssRUFBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JHO0lBQ0ksS0FBSyxDQUFDLEdBQUcsT0FBYztRQUM1QixJQUFBLGVBQUssRUFBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQXRFRCx3Q0FzRUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsT0FBYztJQUNuRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsY0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxPQUFZO0lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakUsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFeEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLGNBQWMsT0FBTyxDQUFDLFFBQVEsRUFBRSxlQUFlLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0NBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFMUYsSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBbUJELFNBQVMsbUJBQW1CLENBQUMsQ0FBTTtJQUNqQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLENBQU07SUFDL0IsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQgeyB0cmFjZSB9IGZyb20gJy4uLy4uL2xvZ2dpbmcnO1xuaW1wb3J0IHsgcmVwbGFjZXJCdWZmZXJXaXRoSW5mbyB9IGZyb20gJy4uLy4uL3NlcmlhbGl6ZSc7XG5cbmV4cG9ydCBjbGFzcyBTZGtUb0NsaUxvZ2dlciBpbXBsZW1lbnRzIExvZ2dlciB7XG4gIHB1YmxpYyB0cmFjZSguLi5fY29udGVudDogYW55W10pIHtcbiAgICAvLyBUaGlzIGlzIHRvbyBtdWNoIGRldGFpbCBmb3Igb3VyIGxvZ3NcbiAgICAvLyB0cmFjZSgnW1NESyB0cmFjZV0gJXMnLCBmbXRDb250ZW50KGNvbnRlbnQpKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWJ1ZyguLi5fY29udGVudDogYW55W10pIHtcbiAgICAvLyBUaGlzIGlzIHRvbyBtdWNoIGRldGFpbCBmb3Igb3VyIGxvZ3NcbiAgICAvLyB0cmFjZSgnW1NESyBkZWJ1Z10gJXMnLCBmbXRDb250ZW50KGNvbnRlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZvIGlzIGNhbGxlZCBtb3N0bHkgKGV4Y2x1c2l2ZWx5PykgZm9yIHN1Y2Nlc3NmdWwgQVBJIGNhbGxzXG4gICAqXG4gICAqIFBheWxvYWQ6XG4gICAqXG4gICAqIChOb3RlIHRoZSBpbnB1dCBjb250YWlucyBlbnRpcmUgQ0ZOIHRlbXBsYXRlcywgZm9yIGV4YW1wbGUpXG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgY2xpZW50TmFtZTogJ1MzQ2xpZW50JyxcbiAgICogICBjb21tYW5kTmFtZTogJ0dldEJ1Y2tldExvY2F0aW9uQ29tbWFuZCcsXG4gICAqICAgaW5wdXQ6IHtcbiAgICogICAgIEJ1Y2tldDogJy4uLi4uJyxcbiAgICogICAgIEV4cGVjdGVkQnVja2V0T3duZXI6IHVuZGVmaW5lZFxuICAgKiAgIH0sXG4gICAqICAgb3V0cHV0OiB7IExvY2F0aW9uQ29uc3RyYWludDogJ2V1LWNlbnRyYWwtMScgfSxcbiAgICogICBtZXRhZGF0YToge1xuICAgKiAgICAgaHR0cFN0YXR1c0NvZGU6IDIwMCxcbiAgICogICAgIHJlcXVlc3RJZDogJy4uLi4nLFxuICAgKiAgICAgZXh0ZW5kZWRSZXF1ZXN0SWQ6ICcuLi4nLFxuICAgKiAgICAgY2ZJZDogdW5kZWZpbmVkLFxuICAgKiAgICAgYXR0ZW1wdHM6IDEsXG4gICAqICAgICB0b3RhbFJldHJ5RGVsYXk6IDBcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgaW5mbyguLi5jb250ZW50OiBhbnlbXSkge1xuICAgIHRyYWNlKCdbc2RrIGluZm9dICVzJywgZm9ybWF0U2RrTG9nZ2VyQ29udGVudChjb250ZW50KSk7XG4gIH1cblxuICBwdWJsaWMgd2FybiguLi5jb250ZW50OiBhbnlbXSkge1xuICAgIHRyYWNlKCdbc2RrIHdhcm5dICVzJywgZm9ybWF0U2RrTG9nZ2VyQ29udGVudChjb250ZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogRXJyb3IgaXMgY2FsbGVkIG1vc3RseSAoZXhjbHVzaXZlbHk/KSBmb3IgZmFpbGluZyBBUEkgY2FsbHNcbiAgICpcbiAgICogUGF5bG9hZCAoaW5wdXQgd291bGQgYmUgdGhlIGVudGlyZSBBUEkgY2FsbCBhcmd1bWVudHMpLlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIGNsaWVudE5hbWU6ICdTVFNDbGllbnQnLFxuICAgKiAgIGNvbW1hbmROYW1lOiAnR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kJyxcbiAgICogICBpbnB1dDoge30sXG4gICAqICAgZXJyb3I6IEFnZ3JlZ2F0ZUVycm9yIFtFQ09OTlJFRlVTRURdOlxuICAgKiAgICAgICBhdCBpbnRlcm5hbENvbm5lY3RNdWx0aXBsZSAobm9kZTpuZXQ6MTEyMToxOClcbiAgICogICAgICAgYXQgYWZ0ZXJDb25uZWN0TXVsdGlwbGUgKG5vZGU6bmV0OjE2ODg6Nykge1xuICAgKiAgICAgY29kZTogJ0VDT05OUkVGVVNFRCcsXG4gICAqICAgICAnJG1ldGFkYXRhJzogeyBhdHRlbXB0czogMywgdG90YWxSZXRyeURlbGF5OiA2MDAgfSxcbiAgICogICAgIFtlcnJvcnNdOiBbIFtFcnJvcl0sIFtFcnJvcl0gXVxuICAgKiAgIH0sXG4gICAqICAgbWV0YWRhdGE6IHsgYXR0ZW1wdHM6IDMsIHRvdGFsUmV0cnlEZWxheTogNjAwIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBlcnJvciguLi5jb250ZW50OiBhbnlbXSkge1xuICAgIHRyYWNlKCdbc2RrIGVycm9yXSAlcycsIGZvcm1hdFNka0xvZ2dlckNvbnRlbnQoY29udGVudCkpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBjYW4gYmUgYW55dGhpbmcuXG4gKlxuICogRm9yIGRlYnVnLCBpdCBzZWVtcyB0byBiZSBtb3N0bHkgc3RyaW5ncy5cbiAqIEZvciBpbmZvLCBpdCBzZWVtcyB0byBiZSBvYmplY3RzLlxuICpcbiAqIFN0cmluZ2lmeSBhbmQgam9pbiB3aXRob3V0IHNlcGFyYXRvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNka0xvZ2dlckNvbnRlbnQoY29udGVudDogYW55W10pIHtcbiAgaWYgKGNvbnRlbnQubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgYXBpRm10ID0gZm9ybWF0QXBpQ2FsbChjb250ZW50WzBdKTtcbiAgICBpZiAoYXBpRm10KSB7XG4gICAgICByZXR1cm4gYXBpRm10O1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29udGVudC5tYXAoKHgpID0+IHR5cGVvZiB4ID09PSAnc3RyaW5nJyA/IHggOiBpbnNwZWN0KHgpKS5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0QXBpQ2FsbChjb250ZW50OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWlzU2RrQXBpQ2FsbFN1Y2Nlc3MoY29udGVudCkgJiYgIWlzU2RrQXBpQ2FsbEVycm9yKGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHNlcnZpY2UgPSBjb250ZW50LmNsaWVudE5hbWUucmVwbGFjZSgvQ2xpZW50JC8sICcnKTtcbiAgY29uc3QgYXBpID0gY29udGVudC5jb21tYW5kTmFtZS5yZXBsYWNlKC9Db21tYW5kJC8sICcnKTtcblxuICBjb25zdCBwYXJ0cyA9IFtdO1xuICBpZiAoKGNvbnRlbnQubWV0YWRhdGE/LmF0dGVtcHRzID8/IDApID4gMSkge1xuICAgIHBhcnRzLnB1c2goYFske2NvbnRlbnQubWV0YWRhdGE/LmF0dGVtcHRzfSBhdHRlbXB0cywgJHtjb250ZW50Lm1ldGFkYXRhPy50b3RhbFJldHJ5RGVsYXl9bXMgcmV0cnldYCk7XG4gIH1cblxuICBwYXJ0cy5wdXNoKGAke3NlcnZpY2V9LiR7YXBpfSgke0pTT04uc3RyaW5naWZ5KGNvbnRlbnQuaW5wdXQsIHJlcGxhY2VyQnVmZmVyV2l0aEluZm8pfSlgKTtcblxuICBpZiAoaXNTZGtBcGlDYWxsU3VjY2Vzcyhjb250ZW50KSkge1xuICAgIHBhcnRzLnB1c2goJy0+IE9LJyk7XG4gIH0gZWxzZSB7XG4gICAgcGFydHMucHVzaChgLT4gJHtjb250ZW50LmVycm9yfWApO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbn1cblxuaW50ZXJmYWNlIFNka0FwaUNhbGxCYXNlIHtcbiAgY2xpZW50TmFtZTogc3RyaW5nO1xuICBjb21tYW5kTmFtZTogc3RyaW5nO1xuICBpbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1ldGFkYXRhPzoge1xuICAgIGh0dHBTdGF0dXNDb2RlPzogbnVtYmVyO1xuICAgIHJlcXVlc3RJZD86IHN0cmluZztcbiAgICBleHRlbmRlZFJlcXVlc3RJZD86IHN0cmluZztcbiAgICBjZklkPzogc3RyaW5nO1xuICAgIGF0dGVtcHRzPzogbnVtYmVyO1xuICAgIHRvdGFsUmV0cnlEZWxheT86IG51bWJlcjtcbiAgfTtcbn1cblxudHlwZSBTZGtBcGlDYWxsU3VjY2VzcyA9IFNka0FwaUNhbGxCYXNlICYgeyBvdXRwdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH07XG50eXBlIFNka0FwaUNhbGxFcnJvciA9IFNka0FwaUNhbGxCYXNlICYgeyBlcnJvcjogRXJyb3IgfTtcblxuZnVuY3Rpb24gaXNTZGtBcGlDYWxsU3VjY2Vzcyh4OiBhbnkpOiB4IGlzIFNka0FwaUNhbGxTdWNjZXNzIHtcbiAgcmV0dXJuIHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHguY29tbWFuZE5hbWUgJiYgeC5vdXRwdXQ7XG59XG5cbmZ1bmN0aW9uIGlzU2RrQXBpQ2FsbEVycm9yKHg6IGFueSk6IHggaXMgU2RrQXBpQ2FsbEVycm9yIHtcbiAgcmV0dXJuIHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHguY29tbWFuZE5hbWUgJiYgeC5lcnJvcjtcbn1cbiJdfQ==