From 284dff47a2100c0333c2772962702e10e11e1b48 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 11 Feb 2019 14:49:55 +0300 Subject: [PATCH 1/8] feat(logging): enhance logging + separate destination for different log levels: * verbose, debug, silly only to file * info, warn, error to console and file Closes ENG-557 --- src/cli/start.js | 10 +++++----- src/daemon.js | 12 ++++++------ src/jobs/send-tracking-job.js | 2 +- src/logger/index.js | 1 + src/server.js | 10 +++------- src/tracking/index.js | 2 +- 6 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/cli/start.js b/src/cli/start.js index 2edbd57ef..acaa5b4e3 100644 --- a/src/cli/start.js +++ b/src/cli/start.js @@ -33,7 +33,7 @@ class Start extends BaseCLIHandler { daemon.start(); checkDaemon(daemon, configuration) } else { - logger.silly(`iofog-controller already running. PID: ${pid}`) + logger.info(`iofog-controller already running. PID: ${pid}`) } } @@ -42,7 +42,7 @@ class Start extends BaseCLIHandler { await db.migrate(); await db.seed(); } catch (err) { - logger.silly('Unable to initialize the database.', err); + logger.error('Unable to initialize the database.', err); process.exit(1) } } @@ -59,7 +59,7 @@ function checkDaemon(daemon, configuration) { if (iterationsCount === 5) { checkServerProtocol(configuration); - return logger.silly(`ioFog-Controller has started at pid: ${pid}`) + return logger.info(`ioFog-Controller has started at pid: ${pid}`) } setTimeout(check, 1000) @@ -71,9 +71,9 @@ function checkDaemon(daemon, configuration) { function checkServerProtocol(configuration) { const { devMode, port, sslKey, sslCert, intermedKey } = configuration; if (!devMode && sslKey && sslCert && intermedKey) { - logger.silly(`==> 🌎 HTTPS server listening on port ${port}. Open up https://localhost:${port}/ in your browser.`) + logger.info(`==> 🌎 HTTPS server listening on port ${port}. Open up https://localhost:${port}/ in your browser.`) } else { - logger.silly(`==> 🌎 Listening on port ${port}. Open up http://localhost:${port}/ in your browser.`) + logger.info(`==> 🌎 Listening on port ${port}. Open up http://localhost:${port}/ in your browser.`) } } diff --git a/src/daemon.js b/src/daemon.js index fcd2ed97d..355bc118a 100644 --- a/src/daemon.js +++ b/src/daemon.js @@ -23,22 +23,22 @@ const daemon = daemonize.setup({ daemon .on('starting', async () => { - logger.silly('Starting iofog-controller...'); + logger.info('Starting iofog-controller...'); }) .on('stopping', () => { - logger.silly('Stopping iofog-controller...') + logger.info('Stopping iofog-controller...') }) .on('stopped', (pid) => { - logger.silly('iofog-controller stopped.') + logger.info('iofog-controller stopped.') }) .on('running', (pid) => { - logger.silly('iofog-controller already running. PID: ' + pid) + logger.info('iofog-controller already running. PID: ' + pid) }) .on('notrunning', () => { - logger.silly('iofog-controller is not running') + logger.info('iofog-controller is not running') }) .on('error', (err) => { - logger.silly('iofog-controller failed to start: ' + err.message) + logger.error('iofog-controller failed to start: ' + err.message) }); diff --git a/src/jobs/send-tracking-job.js b/src/jobs/send-tracking-job.js index 2af0366d4..860b98666 100644 --- a/src/jobs/send-tracking-job.js +++ b/src/jobs/send-tracking-job.js @@ -36,7 +36,7 @@ async function sendTracking() { try { Tracking.sendEvents(events); } catch (e) { - //TODO log only in file. add after logging will fixed + logger.silly(`tracking sending failed with error ${e.message}`); } } diff --git a/src/logger/index.js b/src/logger/index.js index 48122a6df..fc35eb5c1 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -32,6 +32,7 @@ const logger = winston.createLogger({ }) logger.add(new winston.transports.Console({ + level: 'info', format: winston.format((log) => { log[MESSAGE] = log.message return log diff --git a/src/server.js b/src/server.js index c3a26aa53..4f407ea35 100644 --- a/src/server.js +++ b/src/server.js @@ -93,17 +93,13 @@ fs.readdirSync(path.join(__dirname, 'jobs')) .forEach(setupJobs); function startHttpServer(app, port, jobs) { - logger.silly("| SSL not configured, starting HTTP server.|"); - - logger.silly("------------------------------------------"); - logger.silly("| SSL not configured, starting HTTP server.|"); - logger.silly("------------------------------------------"); + logger.info("SSL not configured, starting HTTP server."); app.listen(port, function onStart(err) { if (err) { logger.error(err) } - logger.silly(`==> 🌎 Listening on port ${port}. Open up http://localhost:${port}/ in your browser.`, port, port); + logger.info(`==> 🌎 Listening on port ${port}. Open up http://localhost:${port}/ in your browser.`, port, port); jobs.forEach(job => job.run()); }) } @@ -122,7 +118,7 @@ function startHttpsServer(app, port, sslKey, sslCert, intermedKey, jobs) { if (err) { logger.error(err) } - logger.silly(`==> 🌎 HTTPS server listening on port ${port}. Open up https://localhost:${port}/ in your browser.`); + logger.info(`==> 🌎 HTTPS server listening on port ${port}. Open up https://localhost:${port}/ in your browser.`); jobs.forEach(job => job.run()); }) } catch (e) { diff --git a/src/tracking/index.js b/src/tracking/index.js index dbc91bc77..d24e05f59 100644 --- a/src/tracking/index.js +++ b/src/tracking/index.js @@ -130,7 +130,7 @@ async function processEvent(event, fArgs) { try { sendEvents([event]); } catch (e) { - //TODO log only in file. add after logging will fixed + logger.silly(`tracking sending failed with error ${e.message}`); } } } From eeb301304e34d38957b93f1d23067bed6ed157c5 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 11 Feb 2019 16:28:26 +0300 Subject: [PATCH 2/8] feat(logging): enhance logging + json format Closes ENG-557 --- src/logger/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logger/index.js b/src/logger/index.js index fc35eb5c1..4e305abb0 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -22,7 +22,7 @@ const logger = winston.createLogger({ new winston.transports.File({ format: winston.format.combine( winston.format.timestamp(), - winston.format.logstash() + winston.format.json() ), filename: 'iofog-controller.log', dirname: config.get('Service:LogsDirectory'), From ea584c36f003f985859dd4cf2155e4a3c74128f0 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 11 Feb 2019 17:45:06 +0300 Subject: [PATCH 3/8] feat(logging): enhance logging + make logs' properties sorted the same way: [level, timestamp, message, args] Closes ENG-557 --- src/logger/index.js | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/logger/index.js b/src/logger/index.js index 4e305abb0..96423e53c 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -11,10 +11,19 @@ * */ -const winston = require('winston') -const config = require('../config') +const winston = require('winston'); +const config = require('../config'); -const MESSAGE = Symbol.for('message') +const MESSAGE = Symbol.for('message'); + +const formattedJson = winston.format((log) => { + let sortedFields = ['level', 'timestamp', 'message']; + if (log.args) { + sortedFields = sortedFields.concat(['args']).concat(Object.keys(log.args)); + } + log[MESSAGE] = JSON.stringify(log, sortedFields); + return log; +}); const logger = winston.createLogger({ level: 'silly', @@ -22,21 +31,26 @@ const logger = winston.createLogger({ new winston.transports.File({ format: winston.format.combine( winston.format.timestamp(), - winston.format.json() + formattedJson() ), filename: 'iofog-controller.log', dirname: config.get('Service:LogsDirectory'), maxsize: config.get('Service:LogsFileSize'), }), ], -}) +}); logger.add(new winston.transports.Console({ level: 'info', format: winston.format((log) => { - log[MESSAGE] = log.message - return log + let message = `[${log.level}] ${log.message}`; + if (log.args) { + message += ` / args: ${JSON.stringify(log.args)}` + } + log[MESSAGE] = message; + return log; })(), -})) +})); + -module.exports = logger +module.exports = logger; From 600edf7946baec937f436ab5d8fd08727c3a481e Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 11 Feb 2019 17:52:52 +0300 Subject: [PATCH 4/8] feat(logging): enhance logging - disable express logs (comment app.use(morgan())) Closes ENG-557 --- src/server.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server.js b/src/server.js index 4f407ea35..cc5d808e1 100644 --- a/src/server.js +++ b/src/server.js @@ -44,7 +44,8 @@ app.use(Sentry.Handlers.errorHandler()); app.use(helmet()); app.use(xss()); -app.use(morgan('combined')); +//express logs +// app.use(morgan('combined')); app.use(bodyParser.urlencoded({ extended: true, From 779d1868d16beb69b181b5283dc2bf6c072a8380 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Mon, 11 Feb 2019 19:29:31 +0300 Subject: [PATCH 5/8] feat(logging): enhance logging + add nested object support for logger args Closes ENG-557 --- src/logger/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/logger/index.js b/src/logger/index.js index 96423e53c..1cd774800 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -19,7 +19,7 @@ const MESSAGE = Symbol.for('message'); const formattedJson = winston.format((log) => { let sortedFields = ['level', 'timestamp', 'message']; if (log.args) { - sortedFields = sortedFields.concat(['args']).concat(Object.keys(log.args)); + sortedFields = sortedFields.concat(['args']).concat(getAllObjKeys(log.args)); } log[MESSAGE] = JSON.stringify(log, sortedFields); return log; @@ -52,5 +52,16 @@ logger.add(new winston.transports.Console({ })(), })); +function getAllObjKeys(obj) { + let keys = []; + for (const key in obj) { + keys.push(key); + if (obj[key] instanceof Object) { + const innerKeys = getAllObjKeys(obj[key]); + keys = keys.concat(innerKeys); + } + } + return keys; +} module.exports = logger; From fdbbdf91ba65c0fcfa688e98e668fe0c05dd964f Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Wed, 13 Feb 2019 14:35:34 +0300 Subject: [PATCH 6/8] feat(logging): enhance logging + cliRes cliReq apiRes apiReq logging levels Closes ENG-557 --- src/logger/index.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/logger/index.js b/src/logger/index.js index 1cd774800..c5ead8170 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -16,6 +16,19 @@ const config = require('../config'); const MESSAGE = Symbol.for('message'); +const levels = { + error: 0, + warn: 1, + cliReq: 2, + cliRes: 3, + apiReq: 4, + apiRes: 5, + info: 6, + verbose: 7, + debug: 8, + silly: 9 +}; + const formattedJson = winston.format((log) => { let sortedFields = ['level', 'timestamp', 'message']; if (log.args) { @@ -26,6 +39,7 @@ const formattedJson = winston.format((log) => { }); const logger = winston.createLogger({ + levels: levels, level: 'silly', transports: [ new winston.transports.File({ @@ -43,7 +57,11 @@ const logger = winston.createLogger({ logger.add(new winston.transports.Console({ level: 'info', format: winston.format((log) => { - let message = `[${log.level}] ${log.message}`; + if (log.level === 'cliReq') { + return + } + let message = log.level === 'cliRes' ? `${log.message}` : `[${log.level}] ${log.message}`; + if (log.args) { message += ` / args: ${JSON.stringify(log.args)}` } From 7cf39d627ae0cb88aa3668bab21c99e1f79980a1 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Wed, 13 Feb 2019 16:58:57 +0300 Subject: [PATCH 7/8] feat(logging): enhance logging + add cli logs for request and response Closes ENG-557 --- src/cli/catalog.js | 19 ++++++++++++------- src/cli/config.js | 10 +++++----- src/cli/connector.js | 18 +++++++++++------- src/cli/controller.js | 11 +++++++---- src/cli/diagnostics.js | 21 +++++++++++++-------- src/cli/flow.js | 19 ++++++++++--------- src/cli/iofog.js | 32 ++++++++++++++++++++------------ src/cli/microservice.js | 39 ++++++++++++++++++++++++++------------- src/cli/registry.js | 12 ++++++++---- src/cli/start.js | 8 ++++---- src/cli/tunnel.js | 8 ++++++-- src/cli/user.js | 22 ++++++++++++++-------- src/helpers/app-helper.js | 12 ++++++------ src/logger/index.js | 3 +++ 14 files changed, 145 insertions(+), 89 deletions(-) diff --git a/src/cli/catalog.js b/src/cli/catalog.js index 42c61c72e..416547a15 100644 --- a/src/cli/catalog.js +++ b/src/cli/catalog.js @@ -174,7 +174,7 @@ class Catalog extends BaseCLIHandler { await _executeCase(catalogCommand, constants.CMD_LIST, _listCatalogItems, false); break; case constants.CMD_INFO: - await _executeCase(catalogCommand, constants.CMD_INFO, _listCatalogItem, false); + await _executeCase(catalogCommand, constants.CMD_INFO, _getCatalogItem, false); break; case constants.CMD_HELP: default: @@ -218,8 +218,9 @@ const _createCatalogItem = async function (obj, user) { ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _createCatalogItemObject(obj); + logger.cliReq('catalog add', {args: item}); const catalogItemIdObject = await CatalogItemService.createCatalogItem(item, user); - logger.info(JSON.stringify({ + logger.cliRes(JSON.stringify({ id: catalogItemIdObject.id }, null, 2)); }; @@ -233,23 +234,27 @@ const _updateCatalogItem = async function (obj) { throw new Errors.NotFoundError(ErrorMessages.CATALOG_UPDATE_REQUIRES_ID); } + logger.cliReq('catalog update', {args: item}); await CatalogItemService.updateCatalogItem(obj.itemId, item, {}, true); - logger.info('Catalog item has been updated successfully.'); + logger.cliRes('Catalog item has been updated successfully.'); }; const _deleteCatalogItem = async function (obj) { + logger.cliReq('catalog remove', {args: {itemId: obj.itemId}}); await CatalogItemService.deleteCatalogItem(obj.itemId, {}, true); - logger.info('Catalog item has been removed successfully'); + logger.cliRes('Catalog item has been removed successfully'); }; const _listCatalogItems = async function () { + logger.cliReq('catalog list'); const result = await CatalogItemService.listCatalogItems({}, true); - logger.info(JSON.stringify(result, null, 2)); + logger.cliRes(JSON.stringify(result, null, 2)); }; -const _listCatalogItem = async function (obj) { +const _getCatalogItem = async function (obj) { + logger.cliReq('catalog info', {args: {itemId: obj.itemId}}); const result = await CatalogItemService.getCatalogItem(obj.itemId, {}, true); - logger.info(JSON.stringify(result, null, 2)); + logger.cliRes(JSON.stringify(result, null, 2)); }; const _createCatalogItemObject = function (catalogItem) { diff --git a/src/cli/config.js b/src/cli/config.js index 844bc64e5..d127baef6 100644 --- a/src/cli/config.js +++ b/src/cli/config.js @@ -191,7 +191,7 @@ const _addConfigOption = async function (options) { if (options.emailPassword) { config.set('Email:Password', AppHelper.encryptText(options.emailPassword, config.get('Email:Address'))); - logger.info('Config option email-password has been updated.'); + logger.cliRes('Config option email-password has been updated.'); } await updateConfig(options.emailService, 'email-service', 'Email:Service', (onSuccess) => { @@ -216,10 +216,10 @@ const updateConfig = async function (newConfigValue, cliConfigName, configName, if (newConfigValue !== oldConfigValue) { await fn(function () { const currentConfigValue = config.get(configName); - logger.info(`Config option ${cliConfigName} has been set to ${currentConfigValue}`); + logger.cliRes(`Config option ${cliConfigName} has been set to ${currentConfigValue}`); }); } else { - logger.info(`Config option ${cliConfigName} is already set to ${newConfigValue}`); + logger.cliRes(`Config option ${cliConfigName} is already set to ${newConfigValue}`); } } }; @@ -250,7 +250,7 @@ const _listConfigOptions = function () { const _changeDevModeState = async function (options) { const enableDevMode = AppHelper.validateBooleanCliOptions(options.on, options.off); config.set('Server:DevMode', enableDevMode); - logger.info('Dev mode state updated successfully.'); + logger.cliRes('Dev mode state updated successfully.'); //example of tracking for other config const event = Tracking.buildEvent(TrackingEventType.CONFIG_CHANGED, `devMode was set to ${enableDevMode}`); @@ -260,7 +260,7 @@ const _changeDevModeState = async function (options) { const _changeEmailActivationState = function (options) { const enableEmailActivation = AppHelper.validateBooleanCliOptions(options.on, options.off); config.set('Email:ActivationEnabled', enableEmailActivation); - logger.info('Email activation state updated successfully.') + logger.cliRes('Email activation state updated successfully.') }; module.exports = new Config(); \ No newline at end of file diff --git a/src/cli/connector.js b/src/cli/connector.js index 0839fd3ba..98196d1c4 100644 --- a/src/cli/connector.js +++ b/src/cli/connector.js @@ -127,37 +127,41 @@ async function _executeCase(commands, commandName, f, isUserRequired) { async function _createConnector(obj) { const connector = _createConnectorObject(obj); + logger.cliReq('connector add', {args: connector}); try { await ConnectorService.createConnector(connector); - logger.info('Connector has been created successfully.'); + logger.cliRes('Connector has been created successfully.'); } catch (e) { - logger.info(e.message) + logger.error(e.message) } } async function _updateConnector(obj) { const connector = _createConnectorObject(obj); + logger.cliReq('connector update', {args: connector}); try { await ConnectorService.updateConnector(connector); - logger.info('Connector has been updated successfully.'); + logger.cliRes('Connector has been updated successfully.'); } catch (e) { - logger.info(e.message) + logger.error(e.message) } } async function _deleteConnector(obj) { const connector = _createConnectorObject(obj); + logger.cliReq('connector remove', {args: connector}); try { await ConnectorService.deleteConnector(connector); - logger.info('Connector has been removed successfully.'); + logger.cliRes('Connector has been removed successfully.'); } catch (e) { - logger.info(e.message) + logger.error(e.message) } } async function _getConnectorList() { + logger.cliReq('connector list'); const list = await ConnectorService.getConnectorList(); - logger.info(JSON.stringify(list, null, 2)); + logger.cliRes(JSON.stringify(list, null, 2)); } function _createConnectorObject(cliData) { diff --git a/src/cli/controller.js b/src/cli/controller.js index a1dce0e08..45573c685 100644 --- a/src/cli/controller.js +++ b/src/cli/controller.js @@ -90,22 +90,25 @@ const _executeCase = async function (userCommand, commandName, f, isUserRequired const _getStatus = async function () { const response = await ControllerService.statusController(true); - logger.info(JSON.stringify(response, null, 2)); + logger.cliRes(JSON.stringify(response, null, 2)); }; const _emailActivation = async function () { + logger.cliReq('controller email-activation'); const response = await ControllerService.emailActivation(true); - logger.info(JSON.stringify(response, null, 2)); + logger.cliRes(JSON.stringify(response, null, 2)); }; const _getFogTypes = async function () { + logger.cliReq('controller fog-types'); const response = await ControllerService.getFogTypes(true); - logger.info(JSON.stringify(response, null, 2)); + logger.cliRes(JSON.stringify(response, null, 2)); }; const _getVersion = async function () { + logger.cliReq('controller version'); const response = await ControllerService.getVersion(true); - logger.info(response, null, 2); + logger.cliRes(response, null, 2); }; module.exports = new Controller(); \ No newline at end of file diff --git a/src/cli/diagnostics.js b/src/cli/diagnostics.js index fe7eb4bdb..f49ddadd6 100644 --- a/src/cli/diagnostics.js +++ b/src/cli/diagnostics.js @@ -128,32 +128,37 @@ const _executeCase = async function (diagnosticCommand, commandName, f, isUserRe const _changeMicroserviceStraceState = async function (obj) { const isEnable = AppHelper.validateBooleanCliOptions(obj.enable, obj.disable); + logger.cliReq('diagnostics strace-update', {args: {isEnable: isEnable}}); await DiagnosticService.changeMicroserviceStraceState(obj.microserviceUuid, {enable: isEnable}, {}, true); const msg = isEnable ? 'Microservice strace has been enabled' : 'Microservice strace has been disabled'; - logger.info(msg); + logger.cliRes(msg); }; const _getMicroserviceStraceData = async function (obj) { + logger.cliReq('diagnostics strace-info', {args: obj}); const result = await DiagnosticService.getMicroserviceStraceData(obj.microserviceUuid, {format: obj.format}, {}, true); - logger.info('Strace data:'); - logger.info('============================='); - logger.info(result.data); - logger.info('Microservice strace data has been retrieved successfully.'); + logger.cliRes('Strace data:'); + logger.cliRes('============================='); + logger.cliRes(result.data); + logger.cliRes('Microservice strace data has been retrieved successfully.'); }; const _postMicroserviceStraceDataToFtp = async function (obj) { + logger.cliReq('diagnostics strace-ftp-post', {args: obj}); await DiagnosticService.postMicroserviceStraceDatatoFtp(obj.microserviceUuid, obj, {}, true); - logger.info('Strace data has been posted to FTP successfully.'); + logger.cliRes('Strace data has been posted to FTP successfully.'); }; const _postMicroserviceImageSnapshotCreate = async function (obj) { + logger.cliReq('diagnostics image-snapshot-create'); await DiagnosticService.postMicroserviceImageSnapshotCreate(obj.microserviceUuid, {}, true); - logger.info('Microservice image snapshot has been created successfully.'); + logger.cliRes('Microservice image snapshot has been created successfully.'); }; const _getMicroserviceImageSnapshot = async function (obj) { + logger.cliReq('diagnostics image-snapshot-get'); const filePath = await DiagnosticService.getMicroserviceImageSnapshot(obj.microserviceUuid, {}, true); - logger.info('Microservice images path = ' + filePath); + logger.cliRes('Microservice images path = ' + filePath); }; module.exports = new Diagnostics(); \ No newline at end of file diff --git a/src/cli/flow.js b/src/cli/flow.js index 9f3803181..2f1f29761 100644 --- a/src/cli/flow.js +++ b/src/cli/flow.js @@ -146,9 +146,9 @@ const _createFlow = async function (flowData, user) { const flow = flowData.file ? JSON.parse(fs.readFileSync(flowData.file, 'utf8')) : _createFlowObject(flowData); - + logger.cliReq('flow add', {args: flow}); const createdFlow = await FlowService.createFlow(flow, user, true); - logger.info(JSON.stringify({ + logger.cliRes(JSON.stringify({ id: createdFlow.id }, null, 2)); }; @@ -159,28 +159,29 @@ const _updateFlow = async function (flowData) { : _createFlowObject(flowData); const flowId = flowData.flowId; - + logger.cliReq('flow update', {args: flow}); await FlowService.updateFlow(flow, flowId, {}, true); - logger.info('Flow updated successfully.'); + logger.cliRes('Flow updated successfully.'); }; const _deleteFlow = async function (flowData) { const flowId = flowData.flowId; - + logger.cliReq('flow remove', {args: {flowId: flowId}}); await FlowService.deleteFlow(flowId, {}, true); - logger.info('Flow removed successfully.'); + logger.cliRes('Flow removed successfully.'); }; const _getAllFlows = async function () { + logger.cliReq('flow list'); const flows = await FlowService.getAllFlows(true); - logger.info(JSON.stringify(flows, null, 2)); + logger.cliRes(JSON.stringify(flows, null, 2)); }; const _getFlow = async function (flowData) { const flowId = flowData.flowId; - + logger.cliReq('flow info', {args: {flowId: flowId}}); const flow = await FlowService.getFlowWithTransaction(flowId, {}, true); - logger.info(JSON.stringify(flow, null, 2)); + logger.cliRes(JSON.stringify(flow, null, 2)); }; function _createFlowObject(data) { diff --git a/src/cli/iofog.js b/src/cli/iofog.js index f02edbddb..8e4c492db 100644 --- a/src/cli/iofog.js +++ b/src/cli/iofog.js @@ -289,8 +289,9 @@ async function _createFog(obj, user) { ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _createFogObject(obj); + logger.cliReq('fog add', {args: fog}); const result = await FogService.createFog(fog, user, true); - logger.info(JSON.stringify({ + logger.cliRes(JSON.stringify({ uuid: result.uuid }, null, 2)); } @@ -302,38 +303,44 @@ async function _updateFog(obj, user) { fog.uuid = obj.iofogUuid; + logger.cliReq('fog update', {args: fog}); await FogService.updateFog(fog, user, true); - logger.info('ioFog node has been updated successfully.'); + logger.cliRes('ioFog node has been updated successfully.'); } async function _deleteFog(obj, user) { const fog = _createFogObject(obj); + logger.cliReq('fog remove', {args: fog}); await FogService.deleteFog(fog, user, true); - logger.info('ioFog node has been removed successfully'); + logger.cliRes('ioFog node has been removed successfully'); } async function _getFogList(obj, user) { + logger.cliReq('fog list'); const emptyFilters = []; const list = await FogService.getFogList(emptyFilters, user, true); - logger.info(JSON.stringify(list, null, 2)); + logger.cliRes(JSON.stringify(list, null, 2)); } async function _getFog(obj, user) { const fog = _createFogObject(obj); + logger.cliReq('fog info', {args: fog}); const res = await FogService.getFogWithTransaction(fog, user, true); - logger.info(JSON.stringify(res, null, 2)); + logger.cliRes(JSON.stringify(res, null, 2)); } async function _generateProvision(obj, user) { const fog = _createFogObject(obj); + logger.cliReq('fog provisioning-key', {args: fog}); const response = await FogService.generateProvisioningKey(fog, user, true); - logger.info(JSON.stringify(response), null, 2); + logger.cliRes(JSON.stringify(response), null, 2); } async function _setFogRebootCommand(obj, user) { const fog = _createFogObject(obj); + logger.cliReq('fog reboot', {args: fog}); await FogService.setFogRebootCommand(fog, user, true); - logger.info('ioFog reboot command has been set successfully'); + logger.cliRes('ioFog reboot command has been set successfully'); } async function _setFogVersionCommand(obj, user) { @@ -341,22 +348,23 @@ async function _setFogVersionCommand(obj, user) { uuid: obj.iofogUuid, versionCommand: obj.versionCommand }; + logger.cliReq('fog version', {args: fog}); await FogService.setFogVersionCommand(fog, user, true); - logger.info('ioFog version command has been set successfully'); + logger.cliRes('ioFog version command has been set successfully'); } async function _getHalHardwareInfo(obj) { const uuidObj = { uuid: obj.iofogUuid }; - + logger.cliReq('fog hal-hw', {args: uuidObj}); const data = await FogService.getHalHardwareInfo(uuidObj, {}, true); if (data) { if (data.hasOwnProperty('info')) { data.info = JSON.parse(data.info); } - logger.info(JSON.stringify(data, null, 2)); + logger.cliRes(JSON.stringify(data, null, 2)); } } @@ -365,14 +373,14 @@ async function _getHalUsbInfo(obj) { const uuidObj = { uuid: obj.iofogUuid }; - + logger.cliReq('fog hal-usb', {args: uuidObj}); const data = await FogService.getHalUsbInfo(uuidObj, {}, true); if (data) { if (data.hasOwnProperty('info')) { data.info = JSON.parse(data.info); } - logger.info(JSON.stringify(data, null, 2)); + logger.cliRes(JSON.stringify(data, null, 2)); } } diff --git a/src/cli/microservice.js b/src/cli/microservice.js index ab21361f3..e9167c965 100644 --- a/src/cli/microservice.js +++ b/src/cli/microservice.js @@ -322,8 +322,9 @@ const _createRoute = async function (obj, user) { const arr = obj.route.split(':'); const sourceMicroserviceUuid = arr[0]; const destMicroserviceUuid = arr[1]; + logger.cliReq('microservice route-create', {args: {source: sourceMicroserviceUuid, dest: destMicroserviceUuid}}); await MicroserviceService.createRoute(sourceMicroserviceUuid, destMicroserviceUuid, user, true); - logger.info(`Microservice route with source microservice ${sourceMicroserviceUuid} and dest microservice + logger.cliRes(`Microservice route with source microservice ${sourceMicroserviceUuid} and dest microservice ${destMicroserviceUuid} has been created successfully.`) } catch (e) { logger.error(ErrorMessages.CLI.INVALID_ROUTE); @@ -335,8 +336,9 @@ const _removeRoute = async function (obj, user) { const arr = obj.route.split(':'); const sourceMicroserviceUuid = arr[0]; const destMicroserviceUuid = arr[1]; + logger.cliReq('microservice route-remove', {args: {source: sourceMicroserviceUuid, dest: destMicroserviceUuid}}) await MicroserviceService.deleteRoute(sourceMicroserviceUuid, destMicroserviceUuid, user, true); - logger.info('Microservice route with source microservice ' + sourceMicroserviceUuid + + logger.cliRes('Microservice route with source microservice ' + sourceMicroserviceUuid + ' and dest microservice ' + destMicroserviceUuid + 'has been removed successfully.'); } catch (e) { logger.error(ErrorMessages.CLI.INVALID_ROUTE); @@ -345,22 +347,25 @@ const _removeRoute = async function (obj, user) { const _createPortMapping = async function (obj, user) { const mapping = parsePortMappingObject(obj.mapping, ErrorMessages.CLI.INVALID_PORT_MAPPING); + logger.cliReq('microservice port-mapping-create', {args: mapping}); await MicroserviceService.createPortMapping(obj.microserviceUuid, mapping, user, true); - logger.info('Port mapping has been created successfully.'); + logger.cliRes('Port mapping has been created successfully.'); }; const _createVolumeMapping = async function (obj, user) { const mapping = parseVolumeMappingObject(obj.mapping, ErrorMessages.CLI.INVALID_VOLUME_MAPPING); + logger.cliReq('microservice volume-mapping-create', {args: mapping}); const result = await MicroserviceService.createVolumeMapping(obj.microserviceUuid, mapping, user, true); - logger.info(JSON.stringify({ + logger.cliRes(JSON.stringify({ id: result.id }, null, 2)); }; const _removePortMapping = async function (obj, user) { try { + logger.cliReq('microservice port-mapping-remove', {args: obj}); await MicroserviceService.deletePortMapping(obj.microserviceUuid, obj.internalPort, user, true); - logger.info('Port mapping has been removed successfully.'); + logger.cliRes('Port mapping has been removed successfully.'); } catch (e) { logger.error(e.message); } @@ -368,21 +373,24 @@ const _removePortMapping = async function (obj, user) { const _removeVolumeMapping = async function (obj, user) { try { + logger.cliReq('microservice volume-mapping-remove', {args: obj}); await MicroserviceService.deleteVolumeMapping(obj.microserviceUuid, obj.mappingId, user, true); - logger.info('Volume mapping has been deleted successfully.'); + logger.cliRes('Volume mapping has been deleted successfully.'); } catch (e) { logger.error(e.message); } }; const _listPortMappings = async function (obj, user) { + logger.cliReq('microservice port-mapping-list', {args: {microserviceUuid: obj.microserviceUuid}}); const result = await MicroserviceService.listMicroservicePortMappings(obj.microserviceUuid, user, true); - logger.info(JSON.stringify(result, null, 2)); + logger.cliRes(JSON.stringify(result, null, 2)); }; const _listVolumeMappings = async function (obj, user) { + logger.cliReq('microservice volume-mapping-list', {args: {microserviceUuid: obj.microserviceUuid}}); const result = await MicroserviceService.listVolumeMappings(obj.microserviceUuid, user, true); - logger.info(JSON.stringify(result, null, 2)); + logger.cliRes(JSON.stringify(result, null, 2)); }; const _removeMicroservice = async function (obj, user) { @@ -390,18 +398,21 @@ const _removeMicroservice = async function (obj, user) { withCleanup: obj.cleanup }; + logger.cliReq('microservice remove', {args: {microserviceUuid: obj.microserviceUuid, withCleanup: obj.cleanup}}); await MicroserviceService.deleteMicroservice(obj.microserviceUuid, microserviceData, user, true); - logger.info('Microservice has been removed successfully.') + logger.cliRes('Microservice has been removed successfully.') }; const _listMicroservices = async function () { + logger.cliReq('microservice list'); const result = await MicroserviceService.listMicroservices({}, {}, true); - logger.info(JSON.stringify(result, null, 2)); + logger.cliRes(JSON.stringify(result, null, 2)); }; const _getMicroservice = async function (obj, user) { + logger.cliReq('microservice info', {args: {microserviceUuid: obj.microserviceUuid}}); const result = await MicroserviceService.getMicroservice(obj.microserviceUuid, user, true); - logger.info(JSON.stringify(result, null, 2)); + logger.cliRes(JSON.stringify(result, null, 2)); }; const _createMicroservice = async function (obj, user) { @@ -409,8 +420,9 @@ const _createMicroservice = async function (obj, user) { ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _createMicroserviceObject(obj); + logger.cliReq('microservice add', {args: microservice}); const result = await MicroserviceService.createMicroservice(microservice, user, true); - logger.info(JSON.stringify({ + logger.cliRes(JSON.stringify({ uuid: result.uuid }, null, 2)) }; @@ -420,8 +432,9 @@ const _updateMicroservice = async function (obj, user) { ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _updateMicroserviceObject(obj); + logger.cliReq('microservice update', {args: microservice}); await MicroserviceService.updateMicroservice(obj.microserviceUuid, microservice, user, true); - logger.info('Microservice has been updated successfully.'); + logger.cliRes('Microservice has been updated successfully.'); }; const _updateMicroserviceObject = function (obj) { diff --git a/src/cli/registry.js b/src/cli/registry.js index 4cfdde316..166e887da 100644 --- a/src/cli/registry.js +++ b/src/cli/registry.js @@ -122,26 +122,30 @@ class Registry extends BaseCLIHandler { async function _createRegistry(obj, user) { const registry = _createRegistryObject(obj); + logger.cliReq('registry add', {args: registry}); const response = await RegistryService.createRegistry(registry, user); - logger.info(JSON.stringify({ + logger.cliRes(JSON.stringify({ id: response.id }, null, 2)); } async function _getRegistries(obj, user) { + logger.cliReq('registry list'); const result = await RegistryService.findRegistries(user, true); - logger.info(JSON.stringify(result, null, 2)); + logger.cliRes(JSON.stringify(result, null, 2)); } async function _deleteRegistry(obj, user) { + logger.cliReq('registry remove', {args: {id: obj.itemId}}); await RegistryService.deleteRegistry({id: obj.itemId}, user, true); - logger.info('Registry has been removed successfully.'); + logger.cliRes('Registry has been removed successfully.'); } async function _updateRegistry(obj) { const registry = _createRegistryObject(obj); + logger.cliReq('registry update', {args: registry}); await RegistryService.updateRegistry(registry, obj.itemId, {}, true); - logger.info('Registry has been updated successfully.'); + logger.cliRes('Registry has been updated successfully.'); } async function _executeCase(commands, commandName, f, isUserRequired) { diff --git a/src/cli/start.js b/src/cli/start.js index acaa5b4e3..5c318f1a8 100644 --- a/src/cli/start.js +++ b/src/cli/start.js @@ -33,7 +33,7 @@ class Start extends BaseCLIHandler { daemon.start(); checkDaemon(daemon, configuration) } else { - logger.info(`iofog-controller already running. PID: ${pid}`) + logger.cliRes(`iofog-controller already running. PID: ${pid}`) } } @@ -59,7 +59,7 @@ function checkDaemon(daemon, configuration) { if (iterationsCount === 5) { checkServerProtocol(configuration); - return logger.info(`ioFog-Controller has started at pid: ${pid}`) + return logger.cliRes(`ioFog-Controller has started at pid: ${pid}`) } setTimeout(check, 1000) @@ -71,9 +71,9 @@ function checkDaemon(daemon, configuration) { function checkServerProtocol(configuration) { const { devMode, port, sslKey, sslCert, intermedKey } = configuration; if (!devMode && sslKey && sslCert && intermedKey) { - logger.info(`==> 🌎 HTTPS server listening on port ${port}. Open up https://localhost:${port}/ in your browser.`) + logger.cliRes(`==> 🌎 HTTPS server listening on port ${port}. Open up https://localhost:${port}/ in your browser.`) } else { - logger.info(`==> 🌎 Listening on port ${port}. Open up http://localhost:${port}/ in your browser.`) + logger.cliRes(`==> 🌎 Listening on port ${port}. Open up http://localhost:${port}/ in your browser.`) } } diff --git a/src/cli/tunnel.js b/src/cli/tunnel.js index 79501b189..63ec16e73 100644 --- a/src/cli/tunnel.js +++ b/src/cli/tunnel.js @@ -102,6 +102,9 @@ class Tunnel extends BaseCLIHandler { async function _updateTunnel(obj, user) { const action = obj.action; const tunnel = _createTunnelObject(obj); + + logger.cliReq('tunnel update', {args: tunnel}); + if (tunnel.iofogUuid === undefined) { throw new Error("Required field 'ioFog UUID' is missing."); } @@ -116,12 +119,13 @@ async function _updateTunnel(obj, user) { default: throw new Errors.ValidationError(ErrorMessages.INVALID_ACTION_PROPERTY); } - logger.info('Tunnel has been updated successfully.'); + logger.cliRes('Tunnel has been updated successfully.'); } async function _tunnelList() { + logger.cliReq('tunnel list'); const tunnels = await TunnelService.findAll(); - logger.info(JSON.stringify(tunnels, null, 2)); + logger.cliRes(JSON.stringify(tunnels, null, 2)); } async function _executeCase(commands, commandName, f, isUserRequired) { diff --git a/src/cli/user.js b/src/cli/user.js index ad885d416..68e5f2f03 100644 --- a/src/cli/user.js +++ b/src/cli/user.js @@ -126,48 +126,54 @@ const _executeCase = async function (userCommand, commandName, f, isUserRequired }; const _createUser = async function (user) { + logger.cliReq('user add', {args: user}); await Validator.validate(user, Validator.schemas.signUp); user.password = AppHelper.encryptText(user.password, user.email); const response = await UserService.signUp(user, true); - logger.info(JSON.stringify({ + logger.cliRes(JSON.stringify({ id: response.userId }), null, 2) }; const _updateUserDetails = async function (userDetails, user) { + logger.cliReq('user update', {args: userDetails}); await UserService.updateUserDetails(user, userDetails, true); - logger.info('User updated successfully.'); + logger.cliRes('User updated successfully.'); }; const _deleteUser = async function (obj, user) { + logger.cliReq('user remove', {args: {user: user.dataValues, force: obj.force}}); await UserService.deleteUser(obj.force, user, true); - logger.info('User removed successfully.'); + logger.cliRes('User removed successfully.'); }; const _getAllUsers = async function () { + logger.cliReq('user list'); const users = await UserService.list(true); - logger.info(JSON.stringify(users, null, 2)); + logger.cliRes(JSON.stringify(users, null, 2)); }; const _generateToken = async function (emailObj, user) { + logger.cliReq('user generate-token', {args: user.dataValues}); const response = await UserService.login(user, true); - logger.info(JSON.stringify(response, null, 2)); + logger.cliRes(JSON.stringify(response, null, 2)); }; const _activateUser = async function (emailObj, user) { const codeData = { userId: user.id }; - + logger.cliReq('user activate', {args: codeData}); await UserService.activateUser(codeData, true); - logger.info('User activated successfully.'); + logger.cliRes('User activated successfully.'); }; const _suspendUser = async function (emailObj, user) { + logger.cliReq('user suspend', {args: user.dataValues}); await UserService.suspendUser(user, true); - logger.info('User suspended successfully.'); + logger.cliRes('User suspended successfully.'); }; diff --git a/src/helpers/app-helper.js b/src/helpers/app-helper.js index 1a70210f2..47001a060 100644 --- a/src/helpers/app-helper.js +++ b/src/helpers/app-helper.js @@ -163,22 +163,22 @@ function stringifyCliJsonSchema(json) { function handleCLIError(error) { switch (error.name) { case "UNKNOWN_OPTION": - console.log("Invalid argument '" + error.optionName.split('-').join('') + "'"); + logger.error("Invalid argument '" + error.optionName.split('-').join('') + "'"); break; case "UNKNOWN_VALUE": - console.log("Invalid value " + error.value); + logger.error("Invalid value " + error.value); break; case "InvalidArgumentError": - console.log(error.message); + logger.error(error.message); break; case "InvalidArgumentTypeError": - console.log(error.message); + logger.error(error.message); break; case "ALREADY_SET": - console.log("Parameter '" + error.optionName + "' is used multiple times"); + logger.error("Parameter '" + error.optionName + "' is used multiple times"); break; default: - console.log(JSON.stringify(error)); + logger.error(JSON.stringify(error)); break; } } diff --git a/src/logger/index.js b/src/logger/index.js index c5ead8170..f51e3b990 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -73,6 +73,9 @@ logger.add(new winston.transports.Console({ function getAllObjKeys(obj) { let keys = []; for (const key in obj) { + if (!obj.hasOwnProperty(key)) { + continue; + } keys.push(key); if (obj[key] instanceof Object) { const innerKeys = getAllObjKeys(obj[key]); From d76ce11525b5cfe2a986c327c99db0d233d16999 Mon Sep 17 00:00:00 2001 From: maksimchepelev Date: Thu, 14 Feb 2019 17:35:49 +0300 Subject: [PATCH 8/8] feat(logging): enhance logging + add api logs for request and response Closes ENG-557 --- src/controllers/agent-controller.js | 20 --- src/controllers/catalog-controller.js | 6 - src/controllers/diagnostic-controller.js | 9 -- src/controllers/flow-controller.js | 10 -- src/controllers/iofog-controller.js | 10 -- src/controllers/microservices-controller.js | 25 ---- src/controllers/registry-controller.js | 6 - src/controllers/tunnel-controller.js | 3 - src/controllers/user-controller.js | 14 --- src/logger/index.js | 33 ++++- src/routes/agent.js | 115 ++++++++++++++--- src/routes/catalog.js | 26 +++- src/routes/controller.js | 21 +++- src/routes/diagnostics.js | 30 ++++- src/routes/flow.js | 26 +++- src/routes/iofog.js | 61 +++++++-- src/routes/microservices.js | 76 +++++++++--- src/routes/registries.js | 131 +++++++++++--------- src/routes/tunnel.js | 17 ++- src/routes/user.js | 48 +++++-- 20 files changed, 450 insertions(+), 237 deletions(-) diff --git a/src/controllers/agent-controller.js b/src/controllers/agent-controller.js index aefb4c678..7d23b7ead 100644 --- a/src/controllers/agent-controller.js +++ b/src/controllers/agent-controller.js @@ -11,24 +11,18 @@ * */ -const logger = require('../logger'); - const AgentService = require('../services/agent-service'); const AuthDecorator = require('../decorators/authorization-decorator'); const agentProvisionEndPoint = async function (req) { const provisionData = req.body; - logger.info("Parameters: " + JSON.stringify(provisionData)); - return await AgentService.agentProvision(provisionData); }; const agentDeprovisionEndPoint = async function (req, fog) { const deprovisionData = req.body; - logger.info("Parameters: " + JSON.stringify(deprovisionData)); - return await AgentService.agentDeprovision(deprovisionData, fog); }; @@ -39,8 +33,6 @@ const getAgentConfigEndPoint = async function (req, fog) { const updateAgentConfigEndPoint = async function (req, fog) { const updateData = req.body; - logger.info("Parameters: " + JSON.stringify(updateData)); - return await AgentService.updateAgentConfig(updateData, fog); }; @@ -51,8 +43,6 @@ const getAgentConfigChangesEndPoint = async function (req, fog) { const updateAgentStatusEndPoint = async function (req, fog) { const agentStatus = req.body; - logger.info("Parameters: " + JSON.stringify(agentStatus)); - return await AgentService.updateAgentStatus(agentStatus, fog); }; @@ -63,8 +53,6 @@ const getAgentMicroservicesEndPoint = async function (req, fog) { const getAgentMicroserviceEndPoint = async function (req, fog) { const microserviceUuid = req.params.microserviceUuid; - logger.info("Microservice UUID:" + JSON.stringify(microserviceUuid)); - return await AgentService.getAgentMicroservice(microserviceUuid, fog); }; @@ -83,8 +71,6 @@ const getAgentStraceEndPoint = async function (req, fog) { const updateAgentStraceEndPoint = async function (req, fog) { const straceData = req.body; - logger.info("Parameters: " + JSON.stringify(straceData)); - return await AgentService.updateAgentStrace(straceData, fog); }; @@ -95,16 +81,12 @@ const getAgentChangeVersionCommandEndPoint = async function (req, fog) { const updateHalHardwareInfoEndPoint = async function (req, fog) { const hardwareData = req.body; - logger.info("Parameters: " + JSON.stringify(hardwareData)); - return await AgentService.updateHalHardwareInfo(hardwareData, fog); }; const updateHalUsbInfoEndPoint = async function (req, fog) { const usbData = req.body; - logger.info("Parameters: " + JSON.stringify(usbData)); - return await AgentService.updateHalUsbInfo(usbData, fog); }; @@ -122,8 +104,6 @@ const putImageSnapshotEndPoint = async function (req, fog) { async function postTrackingEndPoint(req, fog) { const events = req.body.events; - - logger.info("Parameters: " + JSON.stringify(events)); return await AgentService.postTracking(events, fog) } diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index 9a0791cf6..de38287b2 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -11,12 +11,10 @@ * */ -const logger = require('../logger'); const CatalogService = require('../services/catalog-service'); const AuthDecorator = require('./../decorators/authorization-decorator'); const createCatalogItemEndPoint = async function (req, user) { - logger.info("Parameters: " + JSON.stringify(req.body)); return await CatalogService.createCatalogItem(req.body, user); }; @@ -25,18 +23,14 @@ const listCatalogItemsEndPoint = async function (req, user) { }; const listCatalogItemEndPoint = async function (req, user) { - logger.info("Catalog item id: " + req.params.id); return await CatalogService.getCatalogItem(req.params.id, user, false); }; const deleteCatalogItemEndPoint = async function (req, user) { - logger.info("Catalog item id: " + req.params.id); await CatalogService.deleteCatalogItem(req.params.id, user, false); }; const updateCatalogItemEndPoint = async function (req, user) { - logger.info("Parameters: " + JSON.stringify(req.body)); - logger.info("Catalog item id: " + req.params.id); await CatalogService.updateCatalogItem(req.params.id, req.body, user, false); }; diff --git a/src/controllers/diagnostic-controller.js b/src/controllers/diagnostic-controller.js index 7512f175e..2f54409fe 100644 --- a/src/controllers/diagnostic-controller.js +++ b/src/controllers/diagnostic-controller.js @@ -11,35 +11,26 @@ * */ -const logger = require('../logger'); const DiagnosticService = require('../services/diagnostic-service'); const AuthDecorator = require('./../decorators/authorization-decorator'); const changeMicroserviceStraceStateEndPoint = async function (req, user) { - logger.info("Parameters: " + JSON.stringify(req.body)); - logger.info("Microservice UUID: " + req.params.uuid); return await DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, user, false); }; const getMicroserviceStraceDataEndPoint = async function (req, user) { - logger.info("Parameters:" + JSON.stringify(req.query)); - logger.info("Microservice UUID: " + req.params.uuid); return await DiagnosticService.getMicroserviceStraceData(req.params.uuid, req.query, user, false); }; const postMicroserviceStraceDataToFtpEndPoint = async function (req, user) { - logger.info("Parameters:" + JSON.stringify(req.body)); - logger.info("Microservice UUID: " + req.params.uuid); return await DiagnosticService.postMicroserviceStraceDatatoFtp(req.params.uuid, req.body, user, false); }; const createMicroserviceImageSnapshotEndPoint = async function (req, user) { - logger.info("Microservice UUID: " + req.params.uuid); return await DiagnosticService.postMicroserviceImageSnapshotCreate(req.params.uuid, user, false); }; const getMicroserviceImageSnapshotEndPoint = async function (req, user) { - logger.info("Microservice UUID: " + req.params.uuid); return await DiagnosticService.getMicroserviceImageSnapshot(req.params.uuid, user, false); }; diff --git a/src/controllers/flow-controller.js b/src/controllers/flow-controller.js index f66a0cd5e..c243f953b 100644 --- a/src/controllers/flow-controller.js +++ b/src/controllers/flow-controller.js @@ -11,15 +11,12 @@ * */ -const logger = require('../logger'); const AuthDecorator = require('./../decorators/authorization-decorator'); const FlowService = require('../services/flow-service'); const createFlowEndPoint = async function (req, user) { const flow = req.body; - logger.info("Parameters:" + JSON.stringify(flow)); - return await FlowService.createFlow(flow, user, false) }; @@ -30,8 +27,6 @@ const getFlowsByUserEndPoint = async function (req, user) { const getFlowEndPoint = async function (req, user) { const flowId = req.params.id; - logger.info("Flow id:" + JSON.stringify(flowId)); - return await FlowService.getFlowWithTransaction(flowId, user, false) }; @@ -39,17 +34,12 @@ const updateFlowEndPoint = async function (req, user) { const flow = req.body; const flowId = req.params.id; - logger.info("Parameters:" + JSON.stringify(flow)); - logger.info("Flow id:" + JSON.stringify(flowId)); - return await FlowService.updateFlow(flow, flowId, user, false) }; const deleteFlowEndPoint = async function (req, user) { const flowId = req.params.id; - logger.info("Flow id:" + JSON.stringify(flowId)); - return await FlowService.deleteFlow(flowId, user, false) }; diff --git a/src/controllers/iofog-controller.js b/src/controllers/iofog-controller.js index 52727dc01..b323a6584 100644 --- a/src/controllers/iofog-controller.js +++ b/src/controllers/iofog-controller.js @@ -11,19 +11,16 @@ * */ -const logger = require('../logger'); const AuthDecorator = require('../decorators/authorization-decorator'); const FogService = require('../services/iofog-service'); const qs = require('qs'); async function createFogEndPoint(req, user) { - logger.info("Parameters:" + JSON.stringify(req.body)); const newFog = req.body; return await FogService.createFog(newFog, user, false) } async function updateFogEndPoint(req, user) { - logger.info("Parameters:" + JSON.stringify(req.body)); const updateFog = req.body; updateFog.uuid = req.params.uuid; return await FogService.updateFog(updateFog, user, false) @@ -45,7 +42,6 @@ async function getFogEndPoint(req, user) { } async function getFogListEndPoint(req, user) { - logger.info("Parameters:" + JSON.stringify(req.query)); const query = qs.parse(req.query); return await FogService.getFogList(query.filters, user, false) } @@ -79,9 +75,6 @@ async function getHalHardwareInfoEndPoint(req, user) { const uuidObj = { uuid: req.params.uuid }; - - logger.info("Parameters" + JSON.stringify(uuidObj)); - return await FogService.getHalHardwareInfo(uuidObj, user, false); } @@ -89,9 +82,6 @@ async function getHalUsbInfoEndPoint(req, user) { const uuidObj = { uuid: req.params.uuid }; - - logger.info("Parameters" + JSON.stringify(uuidObj)); - return await FogService.getHalUsbInfo(uuidObj, user, false); } diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index 6426854b3..d33db4f99 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -11,84 +11,62 @@ * */ -const logger = require('../logger'); const AuthDecorator = require('./../decorators/authorization-decorator'); const MicroservicesService = require('../services/microservices-service'); const createMicroserviceOnFogEndPoint = async function (req, user) { const microservice = req.body; - - logger.info("Parameters:" + JSON.stringify(microservice)); - return await MicroservicesService.createMicroservice(microservice, user, false) }; const getMicroserviceEndPoint = async function (req, user) { const microserviceUuid = req.params.uuid; - - logger.info("Microservice uuid:" + JSON.stringify(microserviceUuid)); - return await MicroservicesService.getMicroservice(microserviceUuid, user, false) }; const updateMicroserviceEndPoint = async function (req, user) { const microservice = req.body; const microserviceUuid = req.params.uuid; - - logger.info("Parameters: " + JSON.stringify(microservice)); - logger.info("Microservice uuid:" + JSON.stringify(microserviceUuid)); - return await MicroservicesService.updateMicroservice(microserviceUuid, microservice, user, false) }; const deleteMicroserviceEndPoint = async function (req, user) { const microserviceUuid = req.params.uuid; const microserviceData = req.body || {}; - logger.info("Microservice uuid:" + JSON.stringify(microserviceUuid)); - logger.info("Parameters: " + JSON.stringify(microserviceData)); - return await MicroservicesService.deleteMicroservice(microserviceUuid, microserviceData, user, false) }; const getMicroservicesByFlowEndPoint = async function (req, user) { const flowId = req.query.flowId; - - logger.info("Flow id:" + flowId); - return await MicroservicesService.listMicroservices(flowId, user, false) }; const createMicroserviceRouteEndPoint = async function (req, user) { const sourceUuid = req.params.uuid; const destUuid = req.params.receiverUuid; - logger.info(`Creating route from ${sourceUuid} to ${destUuid}`); return await MicroservicesService.createRoute(sourceUuid, destUuid, user, false) }; const deleteMicroserviceRouteEndPoint = async function (req, user) { const sourceUuid = req.params.uuid; const destUuid = req.params.receiverUuid; - logger.info(`Creating route from ${sourceUuid} to ${destUuid}`); return await MicroservicesService.deleteRoute(sourceUuid, destUuid, user, false) }; const createMicroservicePortMappingEndPoint = async function (req, user) { const uuid = req.params.uuid; const portMappingData = req.body; - logger.info(`Creating port mapping for ${uuid}`); return await MicroservicesService.createPortMapping(uuid, portMappingData, user, false) }; const deleteMicroservicePortMappingEndPoint = async function (req, user) { const uuid = req.params.uuid; const internalPort = req.params.internalPort; - logger.info(`Deleting port mapping for ${uuid}`); return await MicroservicesService.deletePortMapping(uuid, internalPort, user, false) }; const listMicroservicePortMappingsEndPoint = async function (req, user) { const uuid = req.params.uuid; - logger.info(`Getting all port mappings for ${uuid}`); const ports = await MicroservicesService.listMicroservicePortMappings(uuid, user, false); return { ports: ports @@ -98,7 +76,6 @@ const listMicroservicePortMappingsEndPoint = async function (req, user) { const createMicroserviceVolumeMappingEndPoint = async function (req, user) { const microserviceUuid = req.params.uuid; const volumeMappingData = req.body; - logger.info(`Creating volume mapping for ${microserviceUuid}`); const volumeMapping = await MicroservicesService.createVolumeMapping(microserviceUuid, volumeMappingData, user, false); return { id: volumeMapping.id @@ -107,7 +84,6 @@ const createMicroserviceVolumeMappingEndPoint = async function (req, user) { const listMicroserviceVolumeMappingsEndPoint = async function (req, user) { const uuid = req.params.uuid; - logger.info(`Getting all volume mappings for ${uuid}`); const volumeMappings = await MicroservicesService.listVolumeMappings(uuid, user, false); return { volumeMappings: volumeMappings @@ -117,7 +93,6 @@ const listMicroserviceVolumeMappingsEndPoint = async function (req, user) { const deleteMicroserviceVolumeMappingEndPoint = async function (req, user) { const uuid = req.params.uuid; const id = req.params.id; - logger.info(`Deleting volume mapping ${id} for ${uuid}`); return await MicroservicesService.deleteVolumeMapping(uuid, id, user, false); }; diff --git a/src/controllers/registry-controller.js b/src/controllers/registry-controller.js index 3ff6c2971..8fc14e832 100644 --- a/src/controllers/registry-controller.js +++ b/src/controllers/registry-controller.js @@ -11,12 +11,10 @@ * */ -const logger = require('../logger'); const AuthDecorator = require('../decorators/authorization-decorator'); const RegistryService = require('../services/registry-service'); const createRegistryEndPoint = async function (req, user) { - logger.info("Parameters:" + JSON.stringify(req.body)); const registry = req.body; return await RegistryService.createRegistry(registry, user); }; @@ -35,10 +33,6 @@ const deleteRegistryEndPoint = async function (req, user) { const updateRegistryEndPoint = async function (req, user) { const registry = req.body; const registryId = req.params.id; - - logger.info("Parameters:" + JSON.stringify(registry)); - logger.info("Registry id:" + JSON.stringify(registryId)); - return await RegistryService.updateRegistry(registry, registryId, user, false) }; diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index b068ed5eb..c8a1825b7 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -11,14 +11,12 @@ * */ -const logger = require('../logger'); const AuthDecorator = require('../decorators/authorization-decorator'); const TunnelService = require('../services/tunnel-service'); const Errors = require('../helpers/errors'); const ErrorMessages = require('../helpers/error-messages'); const manageTunnelEndPoint = async function (req, user) { - logger.info("Parameters:" + JSON.stringify(req.body)); const action = req.body.action; const tunnelData = { iofogUuid: req.params.id @@ -37,7 +35,6 @@ const manageTunnelEndPoint = async function (req, user) { }; const getTunnelEndPoint = async function (req, user) { - logger.info("Parameters:" + JSON.stringify(req.body)); const tunnelData = { iofogUuid: req.params.id }; diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index c86fa65ab..79496fe35 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -11,8 +11,6 @@ * */ -const logger = require('../logger'); - const UserService = require('../services/user-service'); const AuthDecorator = require('../decorators/authorization-decorator'); const AppHelper = require('../helpers/app-helper'); @@ -31,9 +29,6 @@ const userSignupEndPoint = async function (req) { email: user.email, password: encryptedPassword }; - - logger.info("Parameters:" + JSON.stringify(newUser)); - return await UserService.signUp(newUser, false); }; @@ -51,10 +46,7 @@ const userLoginEndPoint = async function (req) { }; const resendActivationEndPoint = async function (req) { - logger.info("Parameters:" + JSON.stringify(req.query)); - const emailData = req.query; - return await UserService.resendActivation(emailData, false); }; @@ -77,10 +69,7 @@ const getUserProfileEndPoint = async function (req, user) { }; const updateUserProfileEndPoint = async function (req, user) { - logger.info("Parameters:" + JSON.stringify(req.body)); - const profileData = req.body; - return await UserService.updateUserDetails(user, profileData, false); }; @@ -97,10 +86,7 @@ const updateUserPasswordEndPoint = async function (req, user) { }; const resetUserPasswordEndPoint = async function (req) { - logger.info("Parameters:" + JSON.stringify(req.body)); - const emailObj = req.body; - return await UserService.resetUserPassword(emailObj, false); }; diff --git a/src/logger/index.js b/src/logger/index.js index f51e3b990..3be3f1e8d 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -38,6 +38,25 @@ const formattedJson = winston.format((log) => { return log; }); +const prepareObjectLogs = winston.format((log) => { + if (!(log.message instanceof Object)) { + return log; + } + + if (log.level === 'apiReq' && log.message instanceof Object) { + const req = log.message; + log.message = `${req.method} ${req.originalUrl}`; + log.args = {params: req.params, query: req.query, body: req.body} + } + if (log.level === 'apiRes' && log.message instanceof Object) { + const req = log.message.req; + const res = log.message.res; + log.message = `${req.method} ${req.originalUrl}`; + log.args = res + } + return log; +}); + const logger = winston.createLogger({ levels: levels, level: 'silly', @@ -45,6 +64,7 @@ const logger = winston.createLogger({ new winston.transports.File({ format: winston.format.combine( winston.format.timestamp(), + prepareObjectLogs(), formattedJson() ), filename: 'iofog-controller.log', @@ -60,10 +80,21 @@ logger.add(new winston.transports.Console({ if (log.level === 'cliReq') { return } + if (log.level === 'apiReq' && log.message instanceof Object) { + const req = log.message; + log.message = `${req.method} ${req.originalUrl}`; + log.args = {params: req.params, query: req.query, body: req.body} + } + if (log.level === 'apiRes' && log.message instanceof Object) { + const req = log.message.req; + const res = log.message.res; + log.message = `${req.method} ${req.originalUrl}`; + log.args = res + } let message = log.level === 'cliRes' ? `${log.message}` : `[${log.level}] ${log.message}`; if (log.args) { - message += ` / args: ${JSON.stringify(log.args)}` + message += ` | args: ${JSON.stringify(log.args)}` } log[MESSAGE] = message; return log; diff --git a/src/routes/agent.js b/src/routes/agent.js index 4fd60ff19..649dc23ca 100644 --- a/src/routes/agent.js +++ b/src/routes/agent.js @@ -16,12 +16,15 @@ const AgentController = require('../controllers/agent-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'post', path: '/api/v3/agent/provision', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -43,13 +46,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/agent/deprovision', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -67,13 +74,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/config', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -87,13 +98,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'patch', path: '/api/v3/agent/config', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -111,13 +126,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/config/changes', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -135,13 +154,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'put', path: '/api/v3/agent/status', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -159,13 +182,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/microservices', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -179,13 +206,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/microservices/:microserviceUuid', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -203,13 +234,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/registries', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -223,13 +258,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/tunnel', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -247,13 +286,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/strace', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -271,13 +314,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'put', path: '/api/v3/agent/strace', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -299,13 +346,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/version', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -324,13 +375,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'put', path: '/api/v3/agent/hal/hw', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -349,13 +404,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'put', path: '/api/v3/agent/hal/usb', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -374,13 +433,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/agent/delete-node', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errCodes = [ { @@ -394,13 +457,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/agent/image-snapshot', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -419,13 +486,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'put', path: '/api/v3/agent/image-snapshot', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -444,13 +515,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/agent/tracking', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -469,7 +544,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ]; diff --git a/src/routes/catalog.js b/src/routes/catalog.js index dfe3cd840..cf6fa44c1 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -14,12 +14,14 @@ const constants = require('../helpers/constants'); const CatalogController = require('../controllers/catalog-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'get', path: '/api/v3/catalog/microservices', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -38,13 +40,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/catalog/microservices', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_CREATED; const errorCodes = [ @@ -71,13 +76,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/catalog/microservices/:id', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -100,13 +108,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'patch', path: '/api/v3/catalog/microservices/:id', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -137,13 +148,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/catalog/microservices/:id', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -166,7 +180,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ] diff --git a/src/routes/controller.js b/src/routes/controller.js index 0fecf25a7..8c9ccd17a 100644 --- a/src/routes/controller.js +++ b/src/routes/controller.js @@ -14,12 +14,15 @@ const constants = require('../helpers/constants'); const Controller = require('../controllers/controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'get', path: '/api/v3/status', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = []; const statusControllerEndPoint = ResponseDecorator.handleErrors(Controller.statusControllerEndPoint, successCode, errorCodes); @@ -27,13 +30,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/email-activation', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = []; const emailActivationEndPoint = ResponseDecorator.handleErrors(Controller.emailActivationEndPoint, successCode, errorCodes); @@ -41,13 +48,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', - path: '/api/v3/fog-types', + path: '/api/v3/fog-types/', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = []; const fogTypesEndPoint = ResponseDecorator.handleErrors(Controller.fogTypesEndPoint, successCode, errorCodes); @@ -55,7 +66,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ]; diff --git a/src/routes/diagnostics.js b/src/routes/diagnostics.js index d9f512771..eb0d9de58 100644 --- a/src/routes/diagnostics.js +++ b/src/routes/diagnostics.js @@ -15,12 +15,14 @@ const DiagnosticController = require('../controllers/diagnostic-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); const fs = require('fs'); +const logger = require('../logger'); module.exports = [ { method: 'post', path: '/api/v3/microservices/:uuid/image-snapshot', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_CREATED; const errorCodes = [ @@ -43,13 +45,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/microservices/:uuid/image-snapshot', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -70,8 +76,10 @@ module.exports = [ const responseObject = await getMicroserviceImageSnapshotEndPoint(req); if (responseObject.code !== successCode) { res - .status(responseObject.code) - .send(responseObject.body) + .status(responseObject.code) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } else { res.writeHead(successCode, { "Content-Length": responseObject.body['Content-Length'], @@ -86,6 +94,7 @@ module.exports = [ method: 'patch', path: '/api/v3/microservices/:uuid/strace', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -112,13 +121,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/microservices/:uuid/strace', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -141,13 +153,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'put', path: '/api/v3/microservices/:uuid/strace', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -177,7 +193,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ]; diff --git a/src/routes/flow.js b/src/routes/flow.js index 01282731a..c94d2f994 100644 --- a/src/routes/flow.js +++ b/src/routes/flow.js @@ -14,12 +14,14 @@ const constants = require('../helpers/constants'); const FlowController = require('../controllers/flow-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'get', path: '/api/v3/flow', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -34,13 +36,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/flow', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_CREATED; const errorCodes = [ @@ -59,13 +64,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/flow/:id', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -84,13 +92,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'patch', path: '/api/v3/flow/:id', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -113,13 +124,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/flow/:id', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -138,7 +152,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, ]; \ No newline at end of file diff --git a/src/routes/iofog.js b/src/routes/iofog.js index 9fa549444..f9d6ba949 100644 --- a/src/routes/iofog.js +++ b/src/routes/iofog.js @@ -14,12 +14,15 @@ const constants = require('../helpers/constants'); const FogController = require('../controllers/iofog-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'get', path: '/api/v3/iofog-list', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errCodes = [ { @@ -37,13 +40,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/iofog', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_CREATED; const errCodes = [ { @@ -61,13 +68,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'patch', path: '/api/v3/iofog/:uuid', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errCodes = [ { @@ -89,13 +100,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/iofog/:uuid', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_ACCEPTED; const errCodes = [ { @@ -113,13 +128,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/iofog/:uuid', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errCodes = [ { @@ -137,13 +156,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/iofog/:uuid/provisioning-key', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_CREATED; const errCodes = [ { @@ -161,13 +184,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/iofog/:uuid/version/:versionCommand', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errCodes = [ { @@ -189,13 +216,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/iofog/:uuid/reboot', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errCodes = [ { @@ -218,13 +249,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/iofog/:uuid/hal/hw', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errCodes = [ { @@ -242,13 +277,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/iofog/:uuid/hal/usb', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errCodes = [ { @@ -266,7 +305,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ]; \ No newline at end of file diff --git a/src/routes/microservices.js b/src/routes/microservices.js index 5a8c55106..218efcb90 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -14,12 +14,14 @@ const constants = require('../helpers/constants'); const MicroservicesController = require('../controllers/microservices-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'get', path: '/api/v3/microservices/', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -33,14 +35,17 @@ module.exports = [ const responseObject = await getMicroservicesByFlowEndPoint(req); res - .status(responseObject.code) - .send(responseObject.body) + .status(responseObject.code) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/microservices', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_CREATED; const errorCodes = [ @@ -59,13 +64,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/microservices/:uuid', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -84,7 +92,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, @@ -92,6 +102,7 @@ module.exports = [ method: 'patch', path: '/api/v3/microservices/:uuid', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -114,13 +125,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/microservices/:uuid', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -139,13 +153,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/microservices/:uuid/routes/:receiverUuid', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -167,13 +185,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, { method: 'delete', path: '/api/v3/microservices/:uuid/routes/:receiverUuid', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -195,13 +217,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, { method: 'post', path: '/api/v3/microservices/:uuid/port-mapping', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_CREATED; const errorCodes = [ { @@ -223,13 +249,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, { method: 'delete', path: '/api/v3/microservices/:uuid/port-mapping/:internalPort', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -247,13 +277,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, { method: 'get', path: '/api/v3/microservices/:uuid/port-mapping', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -271,13 +305,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, { method: 'get', path: '/api/v3/microservices/:uuid/volume-mapping', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -299,13 +337,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, { method: 'post', path: '/api/v3/microservices/:uuid/volume-mapping', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_CREATED; const errorCodes = [ { @@ -331,13 +373,17 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, { method: 'delete', path: '/api/v3/microservices/:uuid/volume-mapping/:id', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -363,7 +409,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); }, }, ]; diff --git a/src/routes/registries.js b/src/routes/registries.js index 51973ffe1..fe5bd0a27 100644 --- a/src/routes/registries.js +++ b/src/routes/registries.js @@ -14,82 +14,97 @@ const constants = require('../helpers/constants') const RegistryController = require('../controllers/registry-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'post', path: '/api/v3/registries', - middleware: async (req, res) => { - const successCode = constants.HTTP_CODE_CREATED; - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ]; - const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.createRegistryEndPoint, successCode, errorCodes); - const responseObject = await registriesEndPoint(req); - res - .status(responseObject.code) - .send(responseObject.body) - } + middleware: async (req, res) => { + logger.apiReq(req); + + const successCode = constants.HTTP_CODE_CREATED; + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ]; + const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.createRegistryEndPoint, successCode, errorCodes); + const responseObject = await registriesEndPoint(req); + res + .status(responseObject.code) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); + } }, { method: 'get', path: '/api/v3/registries', middleware: async (req, res) => { - const successCode = constants.HTTP_CODE_SUCCESS; - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ]; - const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.getRegistriesEndPoint, successCode, errorCodes); - const responseObject = await registriesEndPoint(req); - res - .status(responseObject.code) - .send(responseObject.body) + logger.apiReq(req); + + const successCode = constants.HTTP_CODE_SUCCESS; + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ]; + const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.getRegistriesEndPoint, successCode, errorCodes); + const responseObject = await registriesEndPoint(req); + res + .status(responseObject.code) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/registries/:id', - middleware: async (req, res) => { - const successCode = constants.HTTP_CODE_NO_CONTENT; - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ]; - const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.deleteRegistryEndPoint, successCode, errorCodes); - const responseObject = await registriesEndPoint(req); - res - .status(responseObject.code) - .send(responseObject.body) - } + middleware: async (req, res) => { + logger.apiReq(req); + + const successCode = constants.HTTP_CODE_NO_CONTENT; + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ]; + const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.deleteRegistryEndPoint, successCode, errorCodes); + const responseObject = await registriesEndPoint(req); + res + .status(responseObject.code) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); + } }, { method: 'patch', path: '/api/v3/registries/:id', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -109,7 +124,9 @@ module.exports = [ const responseObject = await updateRegistryEndPoint(req); res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ]; diff --git a/src/routes/tunnel.js b/src/routes/tunnel.js index c40a7d4ee..ff33afe94 100644 --- a/src/routes/tunnel.js +++ b/src/routes/tunnel.js @@ -14,12 +14,15 @@ const constants = require('../helpers/constants') const TunnelController = require('../controllers/tunnel-controller'); const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); +const logger = require('../logger'); module.exports = [ { method: 'patch', path: '/api/v3/iofog/:id/tunnel', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ { @@ -38,14 +41,18 @@ module.exports = [ const tunnelEndPoint = ResponseDecorator.handleErrors(TunnelController.manageTunnelEndPoint, successCode, errorCodes); const responseObject = await tunnelEndPoint(req); res - .status(responseObject.code) - .send(responseObject.body); + .status(responseObject.code) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/iofog/:id/tunnel', middleware: async (req, res) => { + logger.apiReq(req); + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -60,8 +67,10 @@ module.exports = [ const tunnelEndPoint = ResponseDecorator.handleErrors(TunnelController.getTunnelEndPoint, successCode, errorCodes); const responseObject = await tunnelEndPoint(req); res - .status(responseObject.code) - .send(responseObject.body); + .status(responseObject.code) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ]; \ No newline at end of file diff --git a/src/routes/user.js b/src/routes/user.js index 220ad5eaa..f13ecb616 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -17,12 +17,15 @@ const ResponseDecorator = require('../decorators/response-decorator'); const Errors = require('../helpers/errors'); const Config = require('../config'); +const logger = require('../logger'); module.exports = [ { method: 'post', path: '/api/v3/user/login', middleware: async (req, res) => { + logger.apiReq('POST /api/v3/user/login'); //don't use req as arg, because password not encrypted + const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ { @@ -40,13 +43,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes('POST /api/v3/user/login', {args: {statusCode: responseObject.code}}); //don't use req and responseObject as args, because they have password and token } }, { method: 'post', path: '/api/v3/user/logout', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -68,6 +74,7 @@ module.exports = [ method: 'post', path: '/api/v3/user/signup', middleware: async (req, res) => { + logger.apiReq('POST /api/v3/user/signup'); //don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_CREATED; const errorCodes = [ @@ -82,13 +89,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/user/signup/resend-activation', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -103,13 +113,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'post', path: '/api/v3/user/activate', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SEE_OTHER; const errorCodes = [ @@ -130,13 +143,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'get', path: '/api/v3/user/profile', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -151,13 +167,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'patch', path: '/api/v3/user/profile', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_SUCCESS; const errorCodes = [ @@ -176,13 +195,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/user/profile', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -197,13 +219,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'patch', path: '/api/v3/user/password', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -222,13 +247,16 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } }, { method: 'delete', path: '/api/v3/user/password', middleware: async (req, res) => { + logger.apiReq(req); const successCode = constants.HTTP_CODE_NO_CONTENT; const errorCodes = [ @@ -243,7 +271,9 @@ module.exports = [ res .status(responseObject.code) - .send(responseObject.body) + .send(responseObject.body); + + logger.apiRes({req: req, res: responseObject}); } } ]; \ No newline at end of file