Symfony 4 создает множество исключений. Например: исключения команды консоли, ошибки неправильной конфигурации YAML (также отображаются в консоли), исключения во время запроса и т. Д.
К сожалению, не все из них можно отследить с помощью документированного решения:
https://symfony.com/doc/current/reference/events.html#kernel-exception
Ни одно из исключений консоли не запускает событие kernel.exception.
Я пытаюсь сделать это с Symfony 4.2. *
Я нашел уродливое решение, в котором я переопределяю один из методов класса Kernel (Kernel.php).
Но документация ничего не говорит об этом решении, и мне интересно, есть ли лучший способ перехватить ВСЕ исключения и зарегистрировать их, используя Monolog.
/**
* @throws \Throwable
*/
protected function initializeContainer() {
try {
$container = parent::initializeContainer();
} catch (\Throwable $throwable){
// here i can handle those exceptions/errors
$this->logCriticalErrors($throwable);
throw $throwable;
}
return $container;
}
Я ожидаю перехватить и записать ВСЕ возможное выбрасываемое исключение, в том числе: ошибки в конфигурации YAML любого установленного пакета, исключения, брошенные непосредственно в тестах PHPUnit и т. Д., В один файл.