[HttpKernel] Decouple exception logging from rendering
This commit is contained in:
parent
3ce9c29ae4
commit
a203d31838
@ -1,6 +1,11 @@
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
4.1.0
|
||||
-----
|
||||
|
||||
* `ExceptionListener` now logs and collects exceptions at priority `2048` (previously logged at `-128` and collected at `0`)
|
||||
|
||||
4.0.0
|
||||
-----
|
||||
|
||||
|
@ -37,14 +37,17 @@ class ExceptionListener implements EventSubscriberInterface
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function logKernelException(GetResponseForExceptionEvent $event)
|
||||
{
|
||||
$exception = $event->getException();
|
||||
|
||||
$this->logException($exception, sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', get_class($exception), $exception->getMessage(), $exception->getFile(), $exception->getLine()));
|
||||
}
|
||||
|
||||
public function onKernelException(GetResponseForExceptionEvent $event)
|
||||
{
|
||||
$exception = $event->getException();
|
||||
$request = $event->getRequest();
|
||||
|
||||
$this->logException($exception, sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', get_class($exception), $exception->getMessage(), $exception->getFile(), $exception->getLine()));
|
||||
|
||||
$request = $this->duplicateRequest($exception, $request);
|
||||
$request = $this->duplicateRequest($exception, $event->getRequest());
|
||||
|
||||
try {
|
||||
$response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false);
|
||||
@ -72,7 +75,10 @@ class ExceptionListener implements EventSubscriberInterface
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
KernelEvents::EXCEPTION => array('onKernelException', -128),
|
||||
KernelEvents::EXCEPTION => array(
|
||||
array('logKernelException', 2048),
|
||||
array('onKernelException', -128),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ class ProfilerListener implements EventSubscriberInterface
|
||||
{
|
||||
return array(
|
||||
KernelEvents::RESPONSE => array('onKernelResponse', -100),
|
||||
KernelEvents::EXCEPTION => 'onKernelException',
|
||||
KernelEvents::EXCEPTION => array('onKernelException', 2048),
|
||||
KernelEvents::TERMINATE => array('onKernelTerminate', -1024),
|
||||
);
|
||||
}
|
||||
|
@ -51,11 +51,13 @@ class ExceptionListenerTest extends TestCase
|
||||
$this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul');
|
||||
|
||||
$l = new ExceptionListener('foo');
|
||||
$l->logKernelException($event);
|
||||
$l->onKernelException($event);
|
||||
|
||||
$this->assertEquals(new Response('foo'), $event->getResponse());
|
||||
|
||||
try {
|
||||
$l->logKernelException($event2);
|
||||
$l->onKernelException($event2);
|
||||
$this->fail('RuntimeException expected');
|
||||
} catch (\RuntimeException $e) {
|
||||
@ -72,11 +74,13 @@ class ExceptionListenerTest extends TestCase
|
||||
$logger = new TestLogger();
|
||||
|
||||
$l = new ExceptionListener('foo', $logger);
|
||||
$l->logKernelException($event);
|
||||
$l->onKernelException($event);
|
||||
|
||||
$this->assertEquals(new Response('foo'), $event->getResponse());
|
||||
|
||||
try {
|
||||
$l->logKernelException($event2);
|
||||
$l->onKernelException($event2);
|
||||
$this->fail('RuntimeException expected');
|
||||
} catch (\RuntimeException $e) {
|
||||
|
Reference in New Issue
Block a user