Transformed custom log format into valid JSON strings when parsing log lines.
This commit is contained in:
committed by
Benjamin Arntzen (aider)
parent
d6dad55fe1
commit
99baa79f86
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user