<?php
/**
* Task Queue Logger for Synchronous Execution
*/
class TaskQueueLogger
{
private $logFile = 'task_queue.log';
/**
* Logs a task operation.
*
* @param string $taskName The name of the task.
* @param string $status The status of the task (e.g., 'start', 'success', 'failure', 'error').
* @param mixed $data Optional data related to the task.
*/
public function logTaskOperation(string $taskName, string $status, $data = null): void
{
$timestamp = date('Y-m-d H:i:s');
$logMessage = "[$timestamp] Task: $taskName, Status: $status";
if ($data !== null) {
$logMessage .= ", Data: " . json_encode($data);
}
$logMessage .= PHP_EOL;
$this->logToFile($logMessage);
}
/**
* Logs to the log file.
*
* @param string $message The message to log.
*/
private function logToFile(string $message): void
{
file_put_contents($this->logFile, $message, FILE_APPEND);
}
/**
* Example usage (can be removed in production)
*/
public static function exampleUsage()
{
$logger = new TaskQueueLogger();
$logger->logTaskOperation('ProcessOrder', 'start');
// Simulate a successful task
$logger->logTaskOperation('ProcessOrder', 'success', ['orderId' => 123, 'total' => 50.00]);
// Simulate an error
$logger->logTaskOperation('CalculateInvoice', 'failure', ['reason' => 'Invalid data']);
$logger->logTaskOperation('SendEmail', 'error', ['error' => new Exception('Email sending failed')]);
}
}
//Example Usage (uncomment to run)
//TaskQueueLogger::exampleUsage();
?>
Add your comment