bugfix pack, server logs

This commit is contained in:
NoobishSVK
2024-03-28 22:44:24 +01:00
parent 7f483770f2
commit 298a868ef7
13 changed files with 147 additions and 59 deletions
+49 -2
View File
@@ -1,6 +1,11 @@
const fs = require('fs');
const verboseMode = process.argv.includes('--debug');
const verboseModeFfmpeg = process.argv.includes('--ffmpegdebug');
const ANSI_ESCAPE_CODE_PATTERN = /\x1b\[[0-9;]*m/g;
const MAX_LOG_LINES = 100000;
const getCurrentTime = () => {
const currentTime = new Date();
const hours = currentTime.getHours().toString().padStart(2, '0');
@@ -8,7 +13,12 @@ const getCurrentTime = () => {
return `\x1b[90m[${hours}:${minutes}]\x1b[0m`;
};
const removeANSIEscapeCodes = (str) => {
return str.replace(ANSI_ESCAPE_CODE_PATTERN, '');
};
const MESSAGE_PREFIX = {
CHAT: "\x1b[36m[CHAT]\x1b[0m",
DEBUG: "\x1b[36m[DEBUG]\x1b[0m",
ERROR: "\x1b[31m[ERROR]\x1b[0m",
FFMPEG: "\x1b[36m[FFMPEG]\x1b[0m",
@@ -21,14 +31,20 @@ const logs = [];
const maxLogLines = 250;
const logDebug = (...messages) => {
const logMessage = `${getCurrentTime()} ${MESSAGE_PREFIX.DEBUG} ${messages.join(' ')}`;
if (verboseMode) {
const logMessage = `${getCurrentTime()} ${MESSAGE_PREFIX.DEBUG} ${messages.join(' ')}`;
logs.push(logMessage);
if (logs.length > maxLogLines) {
logs.shift();
}
console.log(logMessage);
}
appendLogToFile(logMessage);
};
const logChat = (...messages) => {
const logMessage = `${getCurrentTime()} ${MESSAGE_PREFIX.CHAT} ${messages[0].nickname} (${messages[0].ip}) sent a chat message: ${messages[0].message}`;
appendLogToFile(logMessage);
};
const logError = (...messages) => {
@@ -38,6 +54,7 @@ const logError = (...messages) => {
logs.shift();
}
console.log(logMessage);
appendLogToFile(logMessage);
};
const logFfmpeg = (...messages) => {
@@ -48,6 +65,7 @@ const logFfmpeg = (...messages) => {
logs.shift();
}
console.log(logMessage);
appendLogToFile(logMessage);
}
};
@@ -58,6 +76,7 @@ const logInfo = (...messages) => {
logs.shift();
}
console.log(logMessage);
appendLogToFile(logMessage);
};
const logWarn = (...messages) => {
@@ -67,8 +86,36 @@ const logWarn = (...messages) => {
logs.shift();
}
console.log(logMessage);
appendLogToFile(logMessage);
};
function appendLogToFile(logMessage) {
const cleanLogMessage = removeANSIEscapeCodes(logMessage);
fs.appendFile('serverlog.txt', cleanLogMessage + '\n', (err) => {
if (err) {
console.error('Error writing to server log:', err);
} else {
fs.readFile('serverlog.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading server log:', err);
} else {
const lineCount = data.split('\n').length;
if (lineCount > MAX_LOG_LINES) {
const excessLines = lineCount - MAX_LOG_LINES;
const truncatedContent = data.split('\n').slice(excessLines).join('\n');
fs.writeFile('serverlog.txt', truncatedContent, (err) => {
if (err) {
console.error('Error truncating server log:', err);
}
});
}
}
});
}
});
}
module.exports = {
logError, logDebug, logFfmpeg, logInfo, logWarn, logs
logError, logDebug, logFfmpeg, logInfo, logWarn, logs, logChat
};