mirror of
https://github.com/KubaPro010/fm-dx-webserver.git
synced 2026-07-30 08:49:16 +02:00
bugfix pack, server logs
This commit is contained in:
+49
-2
@@ -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
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user