current_time('mysql'), 'level' => $level, 'message' => $message, 'context' => $context, ]; // Keep only last 1000 logs if (count($logs) > 1000) { $logs = array_slice($logs, -1000); } update_option('yatra_logs', $logs, false); // autoload=false: grows; read on demand only } /** * Get logs * * @param int $limit Number of logs to retrieve * @param string|null $level Filter by level * @return array */ public static function getLogs(int $limit = 100, ?string $level = null): array { $logs = get_option('yatra_logs', []); // Filter by level if specified if ($level) { $logs = array_filter($logs, function($log) use ($level) { return $log['level'] === $level; }); } // Return last N logs return array_slice(array_reverse($logs), 0, $limit); } /** * Clear logs */ public static function clearLogs(): void { delete_option('yatra_logs'); } }