/**
* Splits log entries into an array of objects for hypothesis validation,
* with basic input validation.
*
* @param {string} logData - A string containing log entries, one per line.
* @param {string} delimiter - The delimiter separating fields within each log entry (e.g., comma, pipe).
* @returns {Array<object>} - An array of objects, where each object represents a log entry
* and contains its fields. Returns an empty array if logData is invalid.
*/
function parseLogData(logData, delimiter = ',') {
if (typeof logData !== 'string' || logData.length === 0) {
console.warn("Invalid logData: Must be a non-empty string.");
return [];
}
const lines = logData.split('\n');
const parsedData = [];
for (const line of lines) {
if (!line.trim()) continue; // Skip empty lines
const fields = line.split(delimiter).map(field => field.trim());
if (fields.length < 2) { // Require at least two fields (e.g., timestamp, message)
console.warn(`Skipping invalid line: ${line}. Insufficient fields.`);
continue;
}
const entry = {};
entry.timestamp = fields[0]; // Assuming first field is timestamp
entry.message = fields.slice(1).join(delimiter); // Remaining fields as message
//Basic validation (example: checking for non-empty message)
if (!entry.message) {
console.warn(`Skipping entry: ${line}. Empty message.`);
continue;
}
parsedData.push(entry);
}
return parsedData;
}
Add your comment