[Debug] update FrameworkBundle and HttpKernel for new ErrorHandler
This commit is contained in:
parent
839e9ac4c4
commit
1701447c85
@ -61,6 +61,9 @@ class FrameworkExtension extends Extension
|
||||
if ($container->getParameter('kernel.debug')) {
|
||||
$loader->load('debug.xml');
|
||||
|
||||
$definition = $container->findDefinition('debug.debug_handlers_listener');
|
||||
$definition->replaceArgument(0, array(new Reference('http_kernel', ContainerInterface::NULL_ON_INVALID_REFERENCE), 'terminateWithException'));
|
||||
|
||||
$definition = $container->findDefinition('http_kernel');
|
||||
$definition->replaceArgument(2, new Reference('debug.controller_resolver'));
|
||||
|
||||
@ -69,6 +72,9 @@ class FrameworkExtension extends Extension
|
||||
$definition->setPublic(false);
|
||||
$container->setDefinition('debug.event_dispatcher.parent', $definition);
|
||||
$container->setAlias('event_dispatcher', 'debug.event_dispatcher');
|
||||
} else {
|
||||
$definition = $container->findDefinition('debug.debug_handlers_listener');
|
||||
$definition->replaceArgument(2, E_COMPILE_ERROR | E_PARSE | E_ERROR | E_CORE_ERROR);
|
||||
}
|
||||
|
||||
$configuration = $this->getConfiguration($configs, $container);
|
||||
|
@ -9,7 +9,6 @@
|
||||
<parameter key="debug.stopwatch.class">Symfony\Component\Stopwatch\Stopwatch</parameter>
|
||||
<parameter key="debug.container.dump">%kernel.cache_dir%/%kernel.container_class%.xml</parameter>
|
||||
<parameter key="debug.controller_resolver.class">Symfony\Component\HttpKernel\Controller\TraceableControllerResolver</parameter>
|
||||
<parameter key="debug.debug_handlers_listener.class">Symfony\Component\HttpKernel\EventListener\DebugHandlersListener</parameter>
|
||||
</parameters>
|
||||
|
||||
<services>
|
||||
@ -26,27 +25,5 @@
|
||||
<argument type="service" id="controller_resolver" />
|
||||
<argument type="service" id="debug.stopwatch" />
|
||||
</service>
|
||||
|
||||
<service id="debug.deprecation_logger_listener" class="%debug.errors_logger_listener.class%">
|
||||
<tag name="kernel.event_subscriber" />
|
||||
<tag name="monolog.logger" channel="deprecation" />
|
||||
<argument>deprecation</argument>
|
||||
<argument type="service" id="logger" on-invalid="null" />
|
||||
</service>
|
||||
|
||||
<service id="debug.scream_logger_listener" class="%debug.errors_logger_listener.class%">
|
||||
<tag name="kernel.event_subscriber" />
|
||||
<tag name="monolog.logger" channel="scream" />
|
||||
<argument>scream</argument>
|
||||
<argument type="service" id="logger" on-invalid="null" />
|
||||
</service>
|
||||
|
||||
<service id="debug.debug_handlers_listener" class="%debug.debug_handlers_listener.class%">
|
||||
<tag name="kernel.event_subscriber" />
|
||||
<argument type="collection">
|
||||
<argument type="service" id="http_kernel" on-invalid="null" />
|
||||
<argument>terminateWithException</argument>
|
||||
</argument>
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
||||
|
@ -5,15 +5,17 @@
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||
|
||||
<parameters>
|
||||
<parameter key="debug.errors_logger_listener.class">Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener</parameter>
|
||||
<parameter key="debug.debug_handlers_listener.class">Symfony\Component\HttpKernel\EventListener\DebugHandlersListener</parameter>
|
||||
</parameters>
|
||||
|
||||
<services>
|
||||
<service id="debug.emergency_logger_listener" class="%debug.errors_logger_listener.class%">
|
||||
<service id="debug.debug_handlers_listener" class="%debug.debug_handlers_listener.class%">
|
||||
<tag name="kernel.event_subscriber" />
|
||||
<tag name="monolog.logger" channel="emergency" />
|
||||
<argument>emergency</argument>
|
||||
<tag name="monolog.logger" channel="php" />
|
||||
<argument /><!-- Exception handler -->
|
||||
<argument type="service" id="logger" on-invalid="null" />
|
||||
<argument /><!-- Log levels map for enabled error levels -->
|
||||
<argument>%kernel.debug%</argument>
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
||||
|
@ -21,7 +21,7 @@
|
||||
"symfony/config" : "~2.4",
|
||||
"symfony/event-dispatcher": "~2.5",
|
||||
"symfony/http-foundation": "~2.4",
|
||||
"symfony/http-kernel": "~2.5",
|
||||
"symfony/http-kernel": "~2.6",
|
||||
"symfony/filesystem": "~2.3",
|
||||
"symfony/routing": "~2.2",
|
||||
"symfony/security-core": "~2.4",
|
||||
|
@ -1,6 +1,11 @@
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
2.6.0
|
||||
-----
|
||||
|
||||
* deprecated `Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener`, use `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` instead
|
||||
|
||||
2.5.0
|
||||
-----
|
||||
|
||||
|
@ -11,33 +11,72 @@
|
||||
|
||||
namespace Symfony\Component\HttpKernel\EventListener;
|
||||
|
||||
use Symfony\Component\Debug\ExceptionHandler;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Debug\ErrorHandler;
|
||||
use Symfony\Component\Debug\AbstractExceptionHandler;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
|
||||
/**
|
||||
* Configures the ExceptionHandler.
|
||||
* Configures errors and exceptions handlers.
|
||||
*
|
||||
* @author Nicolas Grekas <p@tchwork.com>
|
||||
*/
|
||||
class DebugHandlersListener implements EventSubscriberInterface
|
||||
{
|
||||
private $exceptionHandler;
|
||||
private $logger;
|
||||
private $levels;
|
||||
private $debug;
|
||||
|
||||
public function __construct($exceptionHandler)
|
||||
/**
|
||||
* @param callable $exceptionHandler A handler that will be called on Exception
|
||||
* @param LoggerInterface|null $logger A PSR-3 logger
|
||||
* @param array|int $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants
|
||||
* @param bool $debug Enables/disables debug mode
|
||||
*/
|
||||
public function __construct($exceptionHandler, LoggerInterface $logger = null, $levels = null, $debug = true)
|
||||
{
|
||||
if (is_callable($exceptionHandler)) {
|
||||
$this->exceptionHandler = $exceptionHandler;
|
||||
}
|
||||
$this->logger = $logger;
|
||||
$this->levels = $levels;
|
||||
$this->debug = $debug;
|
||||
}
|
||||
|
||||
public function configure()
|
||||
{
|
||||
if ($this->logger) {
|
||||
$handler = set_error_handler('var_dump', 0);
|
||||
$handler = is_array($handler) ? $handler[0] : null;
|
||||
restore_error_handler();
|
||||
if ($handler instanceof ErrorHandler) {
|
||||
if ($this->debug) {
|
||||
$handler->throwAt(-1);
|
||||
}
|
||||
$handler->setDefaultLogger($this->logger, $this->levels);
|
||||
if (is_array($this->levels)) {
|
||||
$scream = 0;
|
||||
foreach ($this->levels as $type => $log) {
|
||||
$scream |= $type;
|
||||
}
|
||||
$this->levels = $scream;
|
||||
}
|
||||
$handler->screamAt($this->levels);
|
||||
}
|
||||
$this->logger = $this->levels = null;
|
||||
}
|
||||
if ($this->exceptionHandler) {
|
||||
$handler = set_exception_handler('var_dump');
|
||||
$handler = is_array($handler) ? $handler[0] : null;
|
||||
restore_exception_handler();
|
||||
if ($handler instanceof ExceptionHandler) {
|
||||
if ($handler instanceof ErrorHandler) {
|
||||
$h = $handler->setExceptionHandler('var_dump') ?: $this->exceptionHandler;
|
||||
$handler->setExceptionHandler($h);
|
||||
$handler = is_array($h) ? $h[0] : null;
|
||||
}
|
||||
if ($handler instanceof AbstractExceptionHandler) {
|
||||
$handler->setHandler($this->exceptionHandler);
|
||||
}
|
||||
$this->exceptionHandler = null;
|
||||
|
@ -21,6 +21,8 @@ use Symfony\Component\HttpKernel\KernelEvents;
|
||||
*
|
||||
* @author Colin Frei <colin@colinfrei.com>
|
||||
* @author Konstantin Myakshin <koc-dp@yandex.ru>
|
||||
*
|
||||
* @deprecated since 2.6, to be removed in 3.0. Use DebugHandlersListener instead.
|
||||
*/
|
||||
class ErrorsLoggerListener implements EventSubscriberInterface
|
||||
{
|
||||
|
@ -19,7 +19,7 @@
|
||||
"php": ">=5.3.3",
|
||||
"symfony/event-dispatcher": "~2.5",
|
||||
"symfony/http-foundation": "~2.4",
|
||||
"symfony/debug": "~2.5",
|
||||
"symfony/debug": "~2.6",
|
||||
"psr/log": "~1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
|
Reference in New Issue
Block a user