1. <?php
  2. /**
  3. * Parses log stream data for maintenance tasks.
  4. *
  5. * @param string $log_data The raw log data.
  6. * @return array An array of maintenance task data.
  7. */
  8. function parseMaintenanceLogs(string $log_data): array
  9. {
  10. $maintenance_tasks = [];
  11. // Split the log data into individual lines.
  12. $lines = explode("\n", $log_data);
  13. foreach ($lines as $line) {
  14. //Skip empty lines or lines starting with '#' (comments)
  15. if (empty(trim($line)) || strpos(trim($line), '#') === 0) {
  16. continue;
  17. }
  18. //Example log format: "YYYY-MM-DD HH:MM:SS - Task: <task_name> - Status: <status> - Details: <details>"
  19. if (preg_match(
  20. '/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) - Task: (.*?) - Status: (.*?) - Details: (.*)$/',
  21. $line,
  22. $matches
  23. )) {
  24. $timestamp = $matches[1];
  25. $task_name = trim($matches[2]);
  26. $status = trim($matches[3]);
  27. $details = trim($matches[4]);
  28. $maintenance_tasks[] = [
  29. 'timestamp' => $timestamp,
  30. 'task_name' => $task_name,
  31. 'status' => $status,
  32. 'details' => $details,
  33. ];
  34. }
  35. }
  36. return $maintenance_tasks;
  37. }
  38. //Example Usage
  39. /*
  40. $logData = <<<LOG
  41. 2023-10-27 10:00:00 - Task: Database Backup - Status: Success - Details: Backup completed successfully.
  42. 2023-10-27 10:05:00 - Task: Server Reboot - Status: Failed - Details: Reboot failed due to network issue.
  43. # This is a comment
  44. 2023-10-27 10:10:00 - Task: Security Audit - Status: In Progress - Details: Scanning for vulnerabilities.
  45. 2023-10-27 10:15:00 - Task: Database Backup - Status: Success - Details: Backup completed successfully.
  46. LOG;
  47. $maintenanceData = parseMaintenanceLogs($logData);
  48. print_r($maintenanceData);
  49. */
  50. ?>

Add your comment