in my usecase, I want to display (when developing) an exception thrown in my php-application.
error_reporting(E_ALL);
ini_set('display_errors', '1');
...
throw new Exception();
This works as it should. When I throw an exception, I will receive it in my http-response from apache (within the returned HTML).
Now, I want to use Monolog for logging. I integrate it, everything works fine, exception is logged to file by Monolog, for example.
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();
But, the exception is not send in the html-part of the http-response any more. So it is not displayed in my browser when I do my http-request.
How do I use Monolog to log my exceptions, and still "display" them?
You need to add you own exception handler.
For example :
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');
...