From 97cf9fbc1ad7cf08b8fb10e659f204ec093d9a26 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Wed, 12 Jun 2024 20:06:59 +0530 Subject: [PATCH] feat: logger --- mx-interpreter/utils/logger.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 mx-interpreter/utils/logger.ts diff --git a/mx-interpreter/utils/logger.ts b/mx-interpreter/utils/logger.ts new file mode 100644 index 00000000..e57421aa --- /dev/null +++ b/mx-interpreter/utils/logger.ts @@ -0,0 +1,30 @@ +/* +* Logger class for more detailed and comprehensible logs (with colors and timestamps) +*/ + +export enum Level { + DATE = 36, + LOG = 0, + WARN = 93, + ERROR = 31, + DEBUG = 95, + RESET = 0, + } + + export default function logger( + message: string | Error, + level: (Level.LOG | Level.WARN | Level.ERROR | Level.DEBUG) = Level.LOG, + ) { + let m = message; + if (message.constructor.name.includes('Error') && typeof message !== 'string') { + m = (message).message; + } + process.stdout.write(`\x1b[${Level.DATE}m[${(new Date()).toLocaleString()}]\x1b[0m `); + process.stdout.write(`\x1b[${level}m`); + if (level === Level.ERROR || level === Level.WARN) { + process.stderr.write(m); + } else { + process.stdout.write(m); + } + process.stdout.write(`\x1b[${Level.RESET}m\n`); + } \ No newline at end of file