Работа планировщика задач 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 или я что-то делаю не так?