Transformed custom log format into valid JSON strings when parsing log lines.

This commit is contained in:
Benjamin Arntzen
2024-06-27 07:21:42 +01:00
committed by Benjamin Arntzen (aider)
parent d6dad55fe1
commit 99baa79f86
+24 -9
View File
@@ -105,15 +105,30 @@ function parseLogLines(data) {
logLines.forEach((line, index) => {
if (line.trim() !== '') {
try {
let unescapedLine = line.replace(/\\"/g, '"');
unescapedLine = unescapedLine.replace(/\\n/g, '\n');
unescapedLine = unescapedLine.replace(/\\t/g, '\t');
unescapedLine = unescapedLine.replace(/\\r/g, '\r');
unescapedLine = unescapedLine.replace(/\\'/g, '\'');
unescapedLine = unescapedLine.replace(/\\&/g, '&');
unescapedLine = unescapedLine.replace(/\\b/g, '\b');
unescapedLine = unescapedLine.replace(/\\f/g, '\f');
const parsedLog = JSON.parse(unescapedLine, (key, value) => {
// Transform the custom log format into a valid JSON string
let jsonLine = line.trim()
.replace(/=\{/g, ':{') // Replace ={ with :{
.replace(/\}([,}])/g, '}$1') // Replace } with } at the end of objects
.replace(/=/g, '":') // Replace = with ":
.replace(/,(\S)/g, ',"$1') // Replace , with ," to separate fields
.replace(/(\w+):/g, '"$1":') // Add quotes around field names
.replace(/"(\w+)":{/g, '"$1":\{') // Ensure that nested objects have correct format
.replace(/(\w+)"(\w+)":/g, '$1"$2":') // Fix fields that may have been incorrectly split
.replace(/""/g, '\\"') // Escape double quotes inside strings
.replace(/(\w+):"/g, '"$1":"') // Ensure that all values are enclosed in double quotes
.replace(/(\w+)"(\w+)"/g, '$1"$2"') // Fix values that may have been incorrectly split
.replace(/""/g, '"'); // Remove any double double-quotes introduced by previous replacements
// Parse the transformed JSON string
const parsedLog = JSON.parse('{' + jsonLine + '}');
validLogs.push(parsedLog);
} catch (parseError) {
console.error(`Error parsing log line at index ${index}: ${parseError.message}`);
}
}
});
return validLogs;
if (typeof value === 'string') {
try {
return JSON.parse(value);