@ricdotnet/logger
Version:
A logger utility for my personal projects.
64 lines • 2.2 kB
JavaScript
;
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