diff --git a/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php b/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php index 106e8d6a49..8e1cdff9b7 100644 --- a/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php +++ b/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php @@ -70,20 +70,19 @@ class MonologExtension extends Extension $logger->addMethodCall('pushHandler', array(new Reference($handler['id']))); } } - } - $this->addClassesToCompile(array( - 'Monolog\\Formatter\\FormatterInterface', - 'Monolog\\Formatter\\LineFormatter', - 'Monolog\\Handler\\HandlerInterface', - 'Monolog\\Handler\\AbstractHandler', - 'Monolog\\Handler\\StreamHandler', - 'Monolog\\Handler\\FingersCrossedHandler', - 'Monolog\\Handler\\TestHandler', - 'Monolog\\Logger', - 'Symfony\\Bundle\\MonologBundle\\Logger\\Logger', - 'Symfony\\Bundle\\MonologBundle\\Logger\\DebugHandler', - )); + $this->addClassesToCompile(array( + 'Monolog\\Formatter\\FormatterInterface', + 'Monolog\\Formatter\\LineFormatter', + 'Monolog\\Handler\\HandlerInterface', + 'Monolog\\Handler\\AbstractHandler', + 'Monolog\\Handler\\StreamHandler', + 'Monolog\\Handler\\FingersCrossedHandler', + 'Monolog\\Logger', + 'Symfony\\Bundle\\MonologBundle\\Logger\\Logger', + 'Symfony\\Bundle\\MonologBundle\\Logger\\DebugHandler', + )); + } } /** @@ -124,6 +123,14 @@ class MonologExtension extends Extension )); break; + case 'firephp': + $definition->setArguments(array( + $handler['level'], + $handler['bubble'], + )); + $definition->addTag('kernel.listener', array('event' => 'onCoreResponse')); + break; + case 'rotating_file': if (!isset($handler['path'])) { $handler['path'] = '%kernel.logs_dir%/%kernel.environment%.log'; diff --git a/src/Symfony/Bundle/MonologBundle/Logger/FirePHPHandler.php b/src/Symfony/Bundle/MonologBundle/Logger/FirePHPHandler.php new file mode 100755 index 0000000000..743faa6c83 --- /dev/null +++ b/src/Symfony/Bundle/MonologBundle/Logger/FirePHPHandler.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\MonologBundle\Logger; + +use Monolog\Handler\FirePHPHandler as BaseFirePHPHandler; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpFoundation\Response; + +/** + * FirePHPHandler. + * + * @author Jordi Boggiano + */ +class FirePHPHandler extends BaseFirePHPHandler +{ + /** + * @var array + */ + private $headers = array(); + + /** + * @var Response + */ + private $response; + + /** + * {@inheritDoc} + */ + protected function sendHeader($header, $content) + { + if ($this->response) { + $this->response->headers->set($header, $content); + } else { + $this->headers[$header] = $content; + } + } + + /** + * Adds the headers to the response once it's created + */ + public function onCoreResponse(FilterResponseEvent $event) + { + $this->response = $event->getResponse(); + foreach ($this->headers as $header => $content) { + $this->response->headers->set($header, $content); + } + $this->headers = array(); + } +} diff --git a/src/Symfony/Bundle/MonologBundle/Resources/config/monolog.xml b/src/Symfony/Bundle/MonologBundle/Resources/config/monolog.xml index f9d84105a8..28e9df73da 100644 --- a/src/Symfony/Bundle/MonologBundle/Resources/config/monolog.xml +++ b/src/Symfony/Bundle/MonologBundle/Resources/config/monolog.xml @@ -13,6 +13,7 @@ Monolog\Handler\SyslogHandler Monolog\Handler\NullHandler Monolog\Handler\TestHandler + Symfony\Bundle\MonologBundle\Logger\FirePHPHandler Symfony\Bundle\MonologBundle\Logger\DebugHandler