From b8f23f469743dd523607e59f99f6a7368ce1ff4b Mon Sep 17 00:00:00 2001 From: Ash Monty Date: Sun, 27 Nov 2022 12:26:54 +0100 Subject: [PATCH] feat: create logger --- utils/logger.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 utils/logger.js diff --git a/utils/logger.js b/utils/logger.js new file mode 100644 index 0000000..52c6468 --- /dev/null +++ b/utils/logger.js @@ -0,0 +1,53 @@ +import fs from 'fs-extra'; +import chalk from 'chalk'; + +const base = './logs'; +fs.ensureDirSync(base); + +const writeStreams = { + success: fs.createWriteStream(`${base}/success.log`), + error: fs.createWriteStream(`${base}/error.log`), + warn: fs.createWriteStream(`${base}/warn.log`), + info: fs.createWriteStream(`${base}/info.log`), +}; + +const time = () => { + const date = new Date(); + return date.toLocaleTimeString([], { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit', fractionalSecondDigits: 3 }); +}; + +function success(message) { + const logLine = `[${time()}] [SUCCESS]: ${message}`; + writeStreams.success.write(`${logLine}\n`); + + console.log(chalk.green.bold(logLine)); +} + +function error(message) { + const logLine = `[${time()}] [ERROR]: ${message}`; + writeStreams.error.write(`${logLine}\n`); + + console.log(chalk.red.bold(logLine)); +} + +function warn(message) { + const logLine = `[${time()}] [WARN]: ${message}`; + writeStreams.warn.write(`${logLine}\n`); + + console.log(chalk.yellow.bold(logLine)); +} + +function info(message) { + const logLine = `[${time()}] [INFO]: ${message}`; + writeStreams.info.write(`${logLine}\n`); + + console.log(chalk.cyan.bold(logLine)); +} + +const logger = { + success, + error, + warn, + info, +}; +export default logger;