в моем сценарии использования я хочу отобразить (при разработке) исключение, сгенерированное в моем php-приложении.
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
throw new Exception();
Это работает как надо. Когда я выбрасываю исключение, я получаю его в своем http-ответе от apache (в возвращенном HTML).
Теперь я хочу использовать Монолог для регистрации. Я интегрирую его, все работает нормально, исключение заносится в файл, например, Monolog.
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
$exception_log = new Logger('exception');
\Monolog\ErrorHandler::register($exception_log, false, null, false);
...
throw new Exception();
Но исключение больше не отправляется в html-часть http-ответа. Поэтому он не отображается в моем браузере, когда я делаю http-запрос.
Как я могу использовать Monolog, чтобы регистрировать мои исключения и по-прежнему «отображать» их?
Вам нужно добавить свой собственный обработчик исключений.
Например :
function echo_exception_handler($e) {
echo sprintf('Uncaught Exception %s: "%s" at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
}
set_exception_handler('echo_exception_handler');
$exception_log = new Logger('exception');
...
Других решений пока нет …