Closed
Description
Q | A |
---|---|
Bug report? | yes |
Feature request? | no |
BC Break report? | no |
RFC? | no |
Symfony version | 3.2.2 |
If the bootstrapping logger is buffering an exception that does not extend ErrorException
, calling ErrorHandler::setDefaultLogger()
or ErrorHandler::setLogger()
results in Fatal error: Call to undefined method \Foo\ExceptionClass::getSeverity() in /.../vendor/symfony/debug/ErrorHandler.php on line 228
Steps to reproduce:
use Monolog\Logger;
use Symfony\Component\Debug\BufferingLogger;
use Symfony\Component\Debug\ErrorHandler;
require './vendor/autoload.php';
$handler = ErrorHandler::register(new ErrorHandler(new BufferingLogger()));
$handler->setExceptionHandler(function () use ($handler) {
$handler->setDefaultLogger(new Logger('log'));
});
throw new \Exception();
Easy peasy fix:
$type = $log[2]['exception']->getSeverity();
to
$type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : E_ERROR;