Gestión de la salida de tareas programadas en Laravel

  • Publicado el 28 enero, 2025
  • Palabras: 40

¿Necesitas realizar un seguimiento de los resultados de tus tareas programadas? El programador de Laravel ofrece métodos elegantes para capturar y almacenar los resultados de los comandos para su posterior revisión.

Gestión de la salida de tareas programadas en Laravel

#Uso básico

Guardar la salida del comando en un archivo:

 

use IlluminateSupportFacadesSchedule;

// Save output to file
Schedule::command('emails:send')
    ->daily()
    ->sendOutputTo($filePath);

// Append output to existing file
Schedule::command('emails:send')
    ->daily()
    ->appendOutputTo($filePath);

 

#Ejemplo práctico

A continuación se muestra cómo puede implementar un registro completo de salida de tareas:

 

class TaskScheduler
{
    protected $outputPath = 'storage/logs/scheduled-tasks';

    public function registerTasks()
    {
        // Database backup with output logging
        Schedule::command('backup:run')
            ->daily()
            ->at('01:00')
            ->appendOutputTo($this->getLogPath('backup'))
            ->before(function () {
                Log::info('Starting database backup...');
            })
            ->after(function () {
                Log::info('Backup process completed');
            });

        // Report generation with separate logs
        Schedule::command('reports:generate')
            ->weekly()
            ->mondays()
            ->at('07:00')
            ->sendOutputTo($this->getLogPath('reports'));

        // Clean old logs weekly
        Schedule::call(function () {
            $this->cleanOldLogs();
        })->weekly();
    }

    protected function getLogPath($task)
    {
        $date = now()->format('Y-m-d');
        return storage_path(
            "logs/scheduled-tasks/{$task}-{$date}.log"
        );
    }

    protected function cleanOldLogs()
    {
        $files = File::files($this->outputPath);
        
        foreach ($files as $file) {
            $age = now()->diffInDays(File::lastModified($file));
            
            if ($age > 30) {
                File::delete($file);
            }
        }
    }
}

 

Estos métodos de manejo de salida facilitan el seguimiento y la depuración de las tareas programadas.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Automatización de copias de seguridad de bases de datos con el Programador de tareas de Laravel y almacenarlas en la nube
1852

Automatización de copias de seguridad de bases de datos con el Programador de tareas de Laravel y almacenarlas en la nube

Monitoreo de tareas mejorado con los métodos condicionales de ping de Laravel
629

Monitoreo de tareas mejorado con los métodos condicionales de ping de Laravel

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión