78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
const modulename = 'Logger:Admin';
|
|
import fsp from 'node:fs/promises';
|
|
import path from 'node:path';
|
|
import { getBootDivider } from '../loggerUtils';
|
|
import consoleFactory from '@lib/console';
|
|
import { LoggerBase } from '../LoggerBase';
|
|
import { chalkInversePad, getTimeHms } from '@lib/misc';
|
|
const console = consoleFactory(modulename);
|
|
|
|
|
|
export default class AdminLogger extends LoggerBase {
|
|
constructor(basePath, lrProfileConfig) {
|
|
const lrDefaultOptions = {
|
|
path: basePath,
|
|
intervalBoundary: true,
|
|
initialRotation: true,
|
|
history: 'admin.history',
|
|
interval: '7d',
|
|
|
|
};
|
|
super(basePath, 'admin', lrDefaultOptions, lrProfileConfig);
|
|
this.lrStream.write(getBootDivider());
|
|
|
|
this.writeCounter = 0;
|
|
}
|
|
|
|
/**
|
|
* Returns a string with short usage stats
|
|
*/
|
|
getUsageStats() {
|
|
return `Writes: ${this.writeCounter}, lrErrors: ${this.lrErrors}`;
|
|
}
|
|
|
|
/**
|
|
* Returns an string with everything in admin.log (the active log rotate file)
|
|
*/
|
|
async getRecentBuffer() {
|
|
try {
|
|
return await fsp.readFile(path.join(this.basePath, 'admin.log'), 'utf8');
|
|
} catch (error) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Handles the input of log data
|
|
*
|
|
* @param {string} author
|
|
* @param {string} message
|
|
*/
|
|
writeSystem(author, message) {
|
|
const timestamp = getTimeHms();
|
|
this.lrStream.write(`[${timestamp}][${author}] ${message}\n`);
|
|
this.writeCounter++;
|
|
}
|
|
|
|
|
|
/**
|
|
* Handles the input of log data
|
|
* TODO: add here discord log forwarding
|
|
*
|
|
* @param {string} author
|
|
* @param {string} action
|
|
* @param {'default'|'command'} type
|
|
*/
|
|
write(author, action, type = 'default') {
|
|
let saveMsg;
|
|
if (type === 'command') {
|
|
saveMsg = `[${author}] executed "${action}"`;
|
|
console.log(`${author} executed ` + chalkInversePad(action));
|
|
} else {
|
|
saveMsg = action;
|
|
console.log(saveMsg);
|
|
}
|
|
this.writeSystem(author, saveMsg);
|
|
}
|
|
};
|