64 lines
1.3 KiB
JavaScript
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;
|