From f4d11966665fcccaaa188af26e88f2d51460398a Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Mon, 25 Apr 2011 17:48:23 +0200 Subject: [PATCH] [MonologBundle] Added FirePHPHandler support --- .../DependencyInjection/MonologExtension.php | 8 +++ .../MonologBundle/Logger/FirePHPHandler.php | 58 +++++++++++++++++++ .../Resources/config/monolog.xml | 1 + 3 files changed, 67 insertions(+) create mode 100755 src/Symfony/Bundle/MonologBundle/Logger/FirePHPHandler.php diff --git a/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php b/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php index d09ceae7e4..8c8830e644 100644 --- a/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php +++ b/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php @@ -123,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