diff --git a/Client/utilities/debugBuilder.js b/Client/utilities/debugBuilder.js index a4e7b19..a7aa6f8 100644 --- a/Client/utilities/debugBuilder.js +++ b/Client/utilities/debugBuilder.js @@ -1,5 +1,27 @@ // Debug const debug = require('debug'); +// Read .env file to process.env +require('dotenv').config(); +// Modules +const { writeFile } = require('fs'); + +const logLocation = process.env.LOG_LOCATION; + +async function writeToLog(logMessage, appName) { + logMessage = String(logMessage + "\n"); + + writeFile( + logLocation ?? `./${appName}.log`, + logMessage, + { encoding: "utf-8", flag: 'a+' }, + (err) => { + if (err) console.error(err); + + // file written successfully + return; + } + ) +} /** * Create the different logging methods for a function @@ -9,14 +31,38 @@ const debug = require('debug'); */ exports.DebugBuilder = class DebugBuilder { constructor(appName, fileName) { - this.INFO = debug(`${appName}:${fileName}:INFO`); - this.DEBUG = debug(`${appName}:${fileName}:DEBUG`); - this.WARN = debug(`${appName}:${fileName}:WARNING`); - this.VERBOSE = debug(`${appName}:${fileName}:VERBOSE`); + this.INFO = (...messageParts) => { + const _info = debug(`${appName}:${fileName}:INFO`); + _info(messageParts); + writeToLog(`${appName}:${fileName}:INFO\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + + this.DEBUG = (...messageParts) => { + const _debug = debug(`${appName}:${fileName}:DEBUG`); + _debug(messageParts); + writeToLog(`${appName}:${fileName}:DEBUG\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + + this.VERBOSE = (...messageParts) => { + const _verbose = debug(`${appName}:${fileName}:VERBOSE`); + _verbose(messageParts); + writeToLog(`${appName}:${fileName}:VERBOSE\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + + this.WARN = (...messageParts) => { + const _warn = debug(`${appName}:${fileName}:WARNING`); + _warn(messageParts); + writeToLog(`${appName}:${fileName}:WARNING\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + this.ERROR = (...messageParts) => { - const error = debug(`${appName}:${fileName}:ERROR`); - error(messageParts); - if (process.env.EXIT_ON_ERROR && process.env.EXIT_ON_ERROR > 0) setTimeout(process.exit, process.env.EXIT_ON_ERROR_DELAY ?? 0); + const _error = debug(`${appName}:${fileName}:ERROR`); + _error(messageParts); + writeToLog(`${appName}:${fileName}:ERROR\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + if (process.env.EXIT_ON_ERROR && process.env.EXIT_ON_ERROR > 0) { + writeToLog("!--- EXITING ---!", appName); + setTimeout(process.exit, process.env.EXIT_ON_ERROR_DELAY ?? 0); + } } } -} \ No newline at end of file +} diff --git a/Server/utilities/debugBuilder.js b/Server/utilities/debugBuilder.js index 793d23f..a7aa6f8 100644 --- a/Server/utilities/debugBuilder.js +++ b/Server/utilities/debugBuilder.js @@ -2,6 +2,26 @@ const debug = require('debug'); // Read .env file to process.env require('dotenv').config(); +// Modules +const { writeFile } = require('fs'); + +const logLocation = process.env.LOG_LOCATION; + +async function writeToLog(logMessage, appName) { + logMessage = String(logMessage + "\n"); + + writeFile( + logLocation ?? `./${appName}.log`, + logMessage, + { encoding: "utf-8", flag: 'a+' }, + (err) => { + if (err) console.error(err); + + // file written successfully + return; + } + ) +} /** * Create the different logging methods for a function @@ -11,14 +31,38 @@ require('dotenv').config(); */ exports.DebugBuilder = class DebugBuilder { constructor(appName, fileName) { - this.INFO = debug(`${appName}:${fileName}:INFO`); - this.DEBUG = debug(`${appName}:${fileName}:DEBUG`); - this.VERBOSE = debug(`${appName}:${fileName}:VERBOSE`); - this.WARN = debug(`${appName}:${fileName}:WARNING`); + this.INFO = (...messageParts) => { + const _info = debug(`${appName}:${fileName}:INFO`); + _info(messageParts); + writeToLog(`${appName}:${fileName}:INFO\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + + this.DEBUG = (...messageParts) => { + const _debug = debug(`${appName}:${fileName}:DEBUG`); + _debug(messageParts); + writeToLog(`${appName}:${fileName}:DEBUG\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + + this.VERBOSE = (...messageParts) => { + const _verbose = debug(`${appName}:${fileName}:VERBOSE`); + _verbose(messageParts); + writeToLog(`${appName}:${fileName}:VERBOSE\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + + this.WARN = (...messageParts) => { + const _warn = debug(`${appName}:${fileName}:WARNING`); + _warn(messageParts); + writeToLog(`${appName}:${fileName}:WARNING\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + } + this.ERROR = (...messageParts) => { - const error = debug(`${appName}:${fileName}:ERROR`); - error(messageParts); - if (process.env.EXIT_ON_ERROR && process.env.EXIT_ON_ERROR > 0) setTimeout(process.exit, process.env.EXIT_ON_ERROR_DELAY ?? 0); + const _error = debug(`${appName}:${fileName}:ERROR`); + _error(messageParts); + writeToLog(`${appName}:${fileName}:ERROR\t-\t${messageParts.map((messagePart, index, array) => {return JSON.stringify(messagePart)})}`, appName); + if (process.env.EXIT_ON_ERROR && process.env.EXIT_ON_ERROR > 0) { + writeToLog("!--- EXITING ---!", appName); + setTimeout(process.exit, process.env.EXIT_ON_ERROR_DELAY ?? 0); + } } } }