2021-10-03 09:58:17 +08:00

64 lines
1.3 KiB
JavaScript

const { writeFile } = require('fs').promises;
const { logFile } = require('../paths');
class Logger {
constructor() {
this.filePath = logFile;
this.levels = {
emergency: 0,
alert: 1,
critical: 2,
error: 3,
warning: 4,
notice: 5,
informational: 6,
debug: 7,
};
this.cleanUp = writeFile(this.filePath, '\n');
}
async log(level, message) {
const severity = Object.keys(this.levels).find((key) => this.levels[key] === level);
const entry = `[${severity}]: ${message}`;
await this.cleanUp;
writeFile(this.filePath, `${entry}\n`, { flag: 'a' });
}
emergency(message) {
return this.log(this.levels.emergency, message);
}
alert(message) {
return this.log(this.levels.alert, message);
}
critical(message) {
return this.log(this.levels.critical, message);
}
error(message) {
return this.log(this.levels.error, message);
}
warning(message) {
return this.log(this.levels.warning, message);
}
notice(message) {
return this.log(this.levels.notice, message);
}
informational(message) {
return this.log(this.levels.informational, message);
}
debug(message) {
return this.log(this.levels.debug, message);
}
}
module.exports = Logger;