From c82081d92ede822b91016a30ad0d0ada7938b856 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 19 Apr 2019 13:42:49 +0200 Subject: [PATCH 1/2] Better Logging --- Server/AzureStorage.js | 110 ++++++++++++++++++++--------------------- Server/MinioStorage.js | 110 ++++++++++++++++++++--------------------- 2 files changed, 110 insertions(+), 110 deletions(-) diff --git a/Server/AzureStorage.js b/Server/AzureStorage.js index ed50e27b8..1a589b90d 100644 --- a/Server/AzureStorage.js +++ b/Server/AzureStorage.js @@ -36,10 +36,10 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> pOrg = " + pOrg); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> pPath = " + pPath); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> pFile = " + pFile); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> pOrg = " + pOrg); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> pPath = " + pPath); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> pFile = " + pFile); } let cacheVersion; @@ -50,13 +50,13 @@ if (cacheVersion !== undefined) { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> " + pOrg + '.' + pPath + '.' + pFile + " found at cache."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> " + pOrg + '.' + pPath + '.' + pFile + " found at cache."); } callBackFunction(global.DEFAULT_OK_RESPONSE, cacheVersion); } else { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> " + pOrg + '.' + pPath + '.' + pFile + " NOT found at cache."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> " + pOrg + '.' + pPath + '.' + pFile + " NOT found at cache."); } let storage = require('azure-storage'); let connectionString; @@ -113,12 +113,12 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } - if (LOG_FILE_CONTENT === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> response = " + JSON.stringify(response)); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> pOrg = " + pOrg); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> pPath = " + pPath); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> pFile = " + pFile); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> onFileReceived -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } + if (LOG_FILE_CONTENT === true) { console.log("[INFO] Azure Storage -> readData -> onFileReceived -> response = " + JSON.stringify(response)); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> onFileReceived -> pOrg = " + pOrg); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> onFileReceived -> pPath = " + pPath); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> readData -> onFileReceived -> pFile = " + pFile); } if (saveAtCache === true) { @@ -128,9 +128,9 @@ if (err !== null || text === null) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> readData -> onFileReceived -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> readData -> onFileReceived -> Returning an empty JSON object string. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> readData -> onFileReceived -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> readData -> onFileReceived -> Returning an empty JSON object string. "); } callBackFunction(global.DEFAULT_FAIL_RESPONSE); return; @@ -157,14 +157,14 @@ callBackFunction(global.DEFAULT_OK_RESPONSE, text); } catch (err) { - console.log("[ERROR] Storage -> readData -> onFileReceived -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> readData -> onFileReceived -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } } } catch (err) { - console.log("[ERROR] Storage -> readData -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> readData -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -173,10 +173,10 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> pOrg = " + pOrg); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> pPath = " + pPath); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> pFile = " + pFile); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> pOrg = " + pOrg); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> pPath = " + pPath); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> pFile = " + pFile); } let storage = require('azure-storage'); let connectionString; @@ -206,17 +206,17 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } - if (LOG_FILE_CONTENT === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> response = " + JSON.stringify(response)); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> pOrg = " + pOrg); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> pPath = " + pPath); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> pFile = " + pFile); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> onFileCreated -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } + if (LOG_FILE_CONTENT === true) { console.log("[INFO] Azure Storage -> writeData -> onFileCreated -> response = " + JSON.stringify(response)); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> onFileCreated -> pOrg = " + pOrg); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> onFileCreated -> pPath = " + pPath); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> writeData -> onFileCreated -> pFile = " + pFile); } if (err !== null || text === null) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> writeData -> onFileCreated -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> writeData -> onFileCreated -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } callBackFunction(global.DEFAULT_FAIL_RESPONSE); return; @@ -226,13 +226,13 @@ callBackFunction(global.DEFAULT_OK_RESPONSE); } catch (err) { - console.log("[ERROR] Storage -> writeData -> onFileCreated -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> writeData -> onFileCreated -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } } catch (err) { - console.log("[ERROR] Storage -> writeData -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> writeData -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -241,10 +241,10 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> pOrg = " + pOrg); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> pPath = " + pPath); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> pFile = " + pFile); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> pOrg = " + pOrg); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> pPath = " + pPath); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> pFile = " + pFile); } let storage = require('azure-storage'); let connectionString; @@ -273,17 +273,17 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } - if (LOG_FILE_CONTENT === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> response = " + JSON.stringify(response)); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> pOrg = " + pOrg); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> pPath = " + pPath); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> pFile = " + pFile); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> onBlobDeleted -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } + if (LOG_FILE_CONTENT === true) { console.log("[INFO] Azure Storage -> deleteBlob -> onBlobDeleted -> response = " + JSON.stringify(response)); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> onBlobDeleted -> pOrg = " + pOrg); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> onBlobDeleted -> pPath = " + pPath); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteBlob -> onBlobDeleted -> pFile = " + pFile); } if (err !== null || text === null) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteBlob -> onBlobDeleted -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> deleteBlob -> onBlobDeleted -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } callBackFunction(global.DEFAULT_FAIL_RESPONSE); return; @@ -293,13 +293,13 @@ callBackFunction(global.DEFAULT_OK_RESPONSE); } catch (err) { - console.log("[ERROR] Storage -> deleteBlob -> onBlobDeleted -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> deleteBlob -> onBlobDeleted -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } } catch (err) { - console.log("[ERROR] Storage -> deleteBlob -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> deleteBlob -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -308,8 +308,8 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> createContainer -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> createContainer -> pContainerName = " + pContainerName); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> createContainer -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> createContainer -> pContainerName = " + pContainerName); } let storage = require('azure-storage'); let connectionString; @@ -339,8 +339,8 @@ if (err) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> createContainer -> onContainerCreated -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> createContainer -> onContainerCreated -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> createContainer -> onContainerCreated -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> createContainer -> onContainerCreated -> err = " + JSON.stringify(err)); } /* ContainerAlreadyExists check */ @@ -370,7 +370,7 @@ } } catch (err) { - console.log("[ERROR] Storage -> createContainer -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> createContainer -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -379,8 +379,8 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteContainer -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteContainer -> pContainerName = " + pContainerName); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteContainer -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Azure Storage -> deleteContainer -> pContainerName = " + pContainerName); } let storage = require('azure-storage'); let connectionString; @@ -410,8 +410,8 @@ if (err) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteContainer -> onContainerDeleted -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteContainer -> onContainerDeleted -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> deleteContainer -> onContainerDeleted -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Azure Storage -> deleteContainer -> onContainerDeleted -> err = " + JSON.stringify(err)); } /* ContainerAlreadyExists check */ @@ -441,7 +441,7 @@ } } catch (err) { - console.log("[ERROR] Storage -> deleteContainer -> err.message = " + err.message); + console.log("[ERROR] Azure Storage -> deleteContainer -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } diff --git a/Server/MinioStorage.js b/Server/MinioStorage.js index 0a282549a..dea6b3d06 100644 --- a/Server/MinioStorage.js +++ b/Server/MinioStorage.js @@ -35,10 +35,10 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> pParam1 = " + pParam1); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> pParam2 = " + pParam2); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> pParam3 = " + pParam3); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> pParam1 = " + pParam1); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> pParam2 = " + pParam2); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> pParam3 = " + pParam3); } let cacheVersion; @@ -49,13 +49,13 @@ if (cacheVersion !== undefined) { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> " + pParam1 + '.' + pParam2 + '.' + pParam3 + " found at cache."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> " + pParam1 + '.' + pParam2 + '.' + pParam3 + " found at cache."); } callBackFunction(global.DEFAULT_OK_RESPONSE, cacheVersion); } else { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> " + pParam1 + '.' + pParam2 + '.' + pParam3 + " NOT found at cache."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> " + pParam1 + '.' + pParam2 + '.' + pParam3 + " NOT found at cache."); } let bucketName = 'aaplatform'; let textFilename; @@ -97,12 +97,12 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } - if (LOG_FILE_CONTENT === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> response = " + JSON.stringify(response)); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> pParam1 = " + pParam1); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> pParam2 = " + pParam2); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> readData -> onFileReceived -> pParam3 = " + pParam3); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> onFileReceived -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } + if (LOG_FILE_CONTENT === true) { console.log("[INFO] Minio Storage -> readData -> onFileReceived -> response = " + JSON.stringify(response)); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> onFileReceived -> pParam1 = " + pParam1); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> onFileReceived -> pParam2 = " + pParam2); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> readData -> onFileReceived -> pParam3 = " + pParam3); } if (saveAtCache === true) { @@ -112,9 +112,9 @@ if (err !== null || text === null) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> readData -> onFileReceived -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> readData -> onFileReceived -> Returning an empty JSON object string. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> readData -> onFileReceived -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> readData -> onFileReceived -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> readData -> onFileReceived -> Returning an empty JSON object string. "); } if (err.code === 'NoSuchKey') { @@ -136,14 +136,14 @@ callBackFunction(global.DEFAULT_OK_RESPONSE, text); } catch (err) { - console.log("[ERROR] Storage -> readData -> onFileReceived -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> readData -> onFileReceived -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } } } catch (err) { - console.log("[ERROR] Storage -> readData -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> readData -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -152,10 +152,10 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> pParam1 = " + pParam1); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> pParam2 = " + pParam2); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> pParam3 = " + pParam3); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> pParam1 = " + pParam1); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> pParam2 = " + pParam2); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> pParam3 = " + pParam3); } let bucketName = 'aaplatform'; let text = pFileContent.toString(); @@ -167,17 +167,17 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } - if (LOG_FILE_CONTENT === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> response = " + JSON.stringify(response)); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> pParam1 = " + pParam1); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> pParam2 = " + pParam2); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> writeData -> onFileCreated -> pParam3 = " + pParam3); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> onFileCreated -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } + if (LOG_FILE_CONTENT === true) { console.log("[INFO] Minio Storage -> writeData -> onFileCreated -> response = " + JSON.stringify(response)); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> onFileCreated -> pParam1 = " + pParam1); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> onFileCreated -> pParam2 = " + pParam2); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> writeData -> onFileCreated -> pParam3 = " + pParam3); } if (err !== null || text === null) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> writeData -> onFileCreated -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> writeData -> onFileCreated -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> writeData -> onFileCreated -> err = " + JSON.stringify(err)); } callBackFunction(global.DEFAULT_FAIL_RESPONSE); return; @@ -187,13 +187,13 @@ callBackFunction(global.DEFAULT_OK_RESPONSE); } catch (err) { - console.log("[ERROR] Storage -> writeData -> onFileCreated -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> writeData -> onFileCreated -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } } catch (err) { - console.log("[ERROR] Storage -> writeData -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> writeData -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -202,10 +202,10 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> pParam1 = " + pParam1); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> pParam2 = " + pParam2); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> pParam3 = " + pParam3); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> pParam1 = " + pParam1); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> pParam2 = " + pParam2); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> pParam3 = " + pParam3); } let bucketName = 'aaplatform'; let textFilename = pParam1 + "/" + pParam2 + "/" + pParam3; @@ -216,17 +216,17 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } - if (LOG_FILE_CONTENT === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> response = " + JSON.stringify(response)); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> pParam1 = " + pParam1); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> pParam2 = " + pParam2); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteBlob -> onBlobDeleted -> pParam3 = " + pParam3); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> onBlobDeleted -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } + if (LOG_FILE_CONTENT === true) { console.log("[INFO] Minio Storage -> deleteBlob -> onBlobDeleted -> response = " + JSON.stringify(response)); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> onBlobDeleted -> pParam1 = " + pParam1); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> onBlobDeleted -> pParam2 = " + pParam2); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteBlob -> onBlobDeleted -> pParam3 = " + pParam3); } if (err !== null || text === null) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteBlob -> onBlobDeleted -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> deleteBlob -> onBlobDeleted -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> deleteBlob -> onBlobDeleted -> err = " + JSON.stringify(err)); } callBackFunction(global.DEFAULT_FAIL_RESPONSE); return; @@ -236,13 +236,13 @@ callBackFunction(global.DEFAULT_OK_RESPONSE); } catch (err) { - console.log("[ERROR] Storage -> deleteBlob -> onBlobDeleted -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> deleteBlob -> onBlobDeleted -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } } catch (err) { - console.log("[ERROR] Storage -> deleteBlob -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> deleteBlob -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -251,8 +251,8 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> createContainer -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> createContainer -> pContainerName = " + pContainerName); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> createContainer -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> createContainer -> pContainerName = " + pContainerName); } let containerName = pContainerName.toLowerCase(); @@ -262,8 +262,8 @@ if (err) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> createContainer -> onContainerCreated -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> createContainer -> onContainerCreated -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> createContainer -> onContainerCreated -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> createContainer -> onContainerCreated -> err = " + JSON.stringify(err)); } /* ContainerAlreadyExists check */ @@ -293,7 +293,7 @@ } } catch (err) { - console.log("[ERROR] Storage -> createContainer -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> createContainer -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -302,8 +302,8 @@ try { - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteContainer -> Entering function."); } - if (CONSOLE_LOG === true) { console.log("[INFO] Storage -> deleteContainer -> pContainerName = " + pContainerName); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteContainer -> Entering function."); } + if (CONSOLE_LOG === true) { console.log("[INFO] Minio Storage -> deleteContainer -> pContainerName = " + pContainerName); } let containerName = pContainerName.toLowerCase(); @@ -313,8 +313,8 @@ if (err) { - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteContainer -> onContainerDeleted -> Error Received from Storage Library. "); } - if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Storage -> deleteContainer -> onContainerDeleted -> err = " + JSON.stringify(err)); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> deleteContainer -> onContainerDeleted -> Error Received from Storage Library. "); } + if (CONSOLE_ERROR_LOG === true) { console.log("[ERROR] Minio Storage -> deleteContainer -> onContainerDeleted -> err = " + JSON.stringify(err)); } /* ContainerAlreadyExists check */ @@ -344,7 +344,7 @@ } } catch (err) { - console.log("[ERROR] Storage -> deleteContainer -> err.message = " + err.message); + console.log("[ERROR] Minio Storage -> deleteContainer -> err.message = " + err.message); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } From 8da2980bf8ab35bbe52e146527a733e1249034e9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 20 Apr 2019 00:31:09 +0200 Subject: [PATCH 2/2] Missing Images --- .../PlottersTradingSimulation/Conditions.png | Bin 0 -> 2692 bytes .../TradingSimulation.png | Bin 0 -> 17153 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Images/AAMasters/PlottersTradingSimulation/Conditions.png create mode 100644 Images/AAMasters/PlottersTradingSimulation/TradingSimulation.png diff --git a/Images/AAMasters/PlottersTradingSimulation/Conditions.png b/Images/AAMasters/PlottersTradingSimulation/Conditions.png new file mode 100644 index 0000000000000000000000000000000000000000..bd226b3030b85641f110a5fc07d2fd89dbfeac14 GIT binary patch literal 2692 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 literal 0 HcmV?d00001 diff --git a/Images/AAMasters/PlottersTradingSimulation/TradingSimulation.png b/Images/AAMasters/PlottersTradingSimulation/TradingSimulation.png new file mode 100644 index 0000000000000000000000000000000000000000..b45b443d170870bd6679100d3c300064fd545cb8 GIT binary patch literal 17153 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 NgQu&X%Q~loCIIgS*W&;H literal 0 HcmV?d00001