UNPKG

@ricdotnet/logger

Version:

A logger utility for my personal projects.

64 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Queue = void 0; const fs = require("fs/promises"); const path = require("path"); const Logger_1 = require("./Logger"); class Queue { logQueue; isRunning; logDir; constructor(options) { this.logQueue = []; this.isRunning = false; this.logDir = options?.directory ?? 'Logs'; this.checkLogDir(); } async checkLogDir() { try { await fs.mkdir(this.logDir); await Logger_1.Logger.get().debug(`Logs folder generated. Logging to: ${this.logDir}`); } catch (error) { await Logger_1.Logger.get().debug(`Logs folder already exists. Logging to: ${this.logDir}`); } } add(message, level) { this.logQueue.push({ message, level }); if (!this.isRunning) { this.isRunning = true; this.runQueue(); } } async runQueue() { const { message, level } = this.logQueue.shift(); await this.writeToFile(message, level); if (this.logQueue.length) { return this.runQueue(); } this.isRunning = false; } async writeToFile(message, level) { const DAY = new Date().getDate(); const MONTH = new Date().getMonth() + 1; const YEAR = new Date().getFullYear(); const HOURS = new Date().getHours(); const MINUTES = new Date().getMinutes(); const FULL_DATE = [DAY, MONTH, YEAR].join('-'); const FULL_TIME = [HOURS, MINUTES].join(':'); let logFile; try { logFile = await fs.readFile(path.join(this.logDir, `${FULL_DATE}-${level}.log`)); } catch (e) { const data = 'Log Time: ' + FULL_TIME + '\n' + message + '\n\n'; await fs.writeFile(path.join(this.logDir, `${FULL_DATE}-${level}.log`), data); } if (logFile) { const data = logFile + 'Log Time: ' + FULL_TIME + '\n' + message + '\n\n'; await fs.writeFile(path.join(this.logDir, `${FULL_DATE}-${level}.log`), data); } } } exports.Queue = Queue; //# sourceMappingURL=Queue.js.map