Работа планировщика задач Laravel. Обработка ошибок

Есть набор команд laravel, в которых подразумевается появление Exception, которые должны отрабатывать по расписанию. При появлении Exception информация об исключении должна падать на электронную почту.

Почитав документацию, нашел что у планировщика Laravel есть событие Illuminate\Console\Events\ScheduledTaskFailed

Соответственно я решил повесить на данное событие слушатель:

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array<class-string, array<int, class-string>>
     */
    protected $listen = [
        
        ScheduledTaskFailed::class => [
            TestListener::class
        ],
    ];
    //...
}

Для примера пишу в информацию в лог

class TestListener
{
    public function handle(ScheduledTaskFailed $event): void
    {
        Log::debug("В команде {$event->task->command} произошло исключение {$event->exception->getMessage()}.
         Трассировка: {$event->exception->getTraceAsString()}");
    }
}

Ну и после всего этого в App\Console\Kernel вызываю выполнение задания каждую минуту:

class Kernel extends ConsoleKernel
{
    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function (){
            throw new \Exception("Test Exception!");
        })->everyMinute();
    }
    // ...
}

В этом случае всё прекрасно работает, но если запускать отдельную команду, через $schedule->command(CommandTest::class) то событие не срабатывает.

Вопрос вот в чём - это так задумано Laravel или я что-то делаю не так?


Ответы (0 шт):