From 55f7521491acab7c60cefdd59b3783dfb1ebba03 Mon Sep 17 00:00:00 2001 From: Timothy Scheuering Date: Mon, 7 Oct 2019 14:19:50 -0400 Subject: [PATCH] feat(http-core): enhance verbose network logging Append an additional method to help enable more verbose network logging when the env flag is enabled. --- .../@webex/http-core/src/lib/interceptor.js | 26 +++++++++++++++++++ .../@webex/http-core/src/request/index.js | 2 ++ 2 files changed, 28 insertions(+) diff --git a/packages/node_modules/@webex/http-core/src/lib/interceptor.js b/packages/node_modules/@webex/http-core/src/lib/interceptor.js index 7d78e5e5a7b..3dca599c785 100644 --- a/packages/node_modules/@webex/http-core/src/lib/interceptor.js +++ b/packages/node_modules/@webex/http-core/src/lib/interceptor.js @@ -2,6 +2,8 @@ * Copyright (c) 2015-2019 Cisco Systems, Inc. See LICENSE file. */ +import {get} from 'lodash'; + /** * @class */ @@ -22,6 +24,30 @@ export default class Interceptor { }); }); } + + this.verboseLoggingEnabled = !!process.env.ENABLE_VERBOSE_NETWORK_LOGGING; + } + + /** + * Logs the options of a request. This should be utilized + * during the intercepting process, but can be used at any + * time otherwise. + * @param {object} options + * @returns {void} + */ + logOptions(options = {}) { + const logger = get(this, 'webex.logger', console); + + if (!this.verboseLoggingEnabled || !logger) { + return; + } + + // prepend a header for the interceptor + logger.info('/***** Interceptor ****************************************************\\'); + + logger.info( + `${this.constructor.name} - ${JSON.stringify(options, null, 2)}` + ); } /** diff --git a/packages/node_modules/@webex/http-core/src/request/index.js b/packages/node_modules/@webex/http-core/src/request/index.js index 9a9fcdffbb7..9ed6566652b 100644 --- a/packages/node_modules/@webex/http-core/src/request/index.js +++ b/packages/node_modules/@webex/http-core/src/request/index.js @@ -38,6 +38,7 @@ export default function request(options) { return interceptors.reduce((promise, interceptor) => promise.then( (result) => { + interceptor.logOptions(options); if (interceptor[successKey]) { return interceptor[successKey](options, result); } @@ -45,6 +46,7 @@ export default function request(options) { return Promise.resolve(result); }, (reason) => { + interceptor.logOptions(options); if (interceptor[errorKey]) { return interceptor[errorKey](options, reason); }