From 5aaf8bc1b1919c72d36cc410d8c92259b8603953 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Sat, 19 Mar 2011 23:41:46 +0100 Subject: [PATCH] Added support of custom handlers defined as services --- .../MonologBundle/DependencyInjection/Configuration.php | 5 +++++ .../MonologBundle/DependencyInjection/MonologExtension.php | 5 +++++ .../MonologBundle/Resources/config/schema/monolog-1.0.xsd | 1 + 3 files changed, 11 insertions(+) diff --git a/src/Symfony/Bundle/MonologBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/MonologBundle/DependencyInjection/Configuration.php index 1345f8787e..2a4461e3bb 100644 --- a/src/Symfony/Bundle/MonologBundle/DependencyInjection/Configuration.php +++ b/src/Symfony/Bundle/MonologBundle/DependencyInjection/Configuration.php @@ -52,6 +52,7 @@ class Configuration ->then(function($v) { return strtolower($v); }) ->end() ->end() + ->scalarNode('id')->end() ->scalarNode('level')->defaultValue('DEBUG')->end() ->booleanNode('bubble')->defaultFalse()->end() ->scalarNode('path')->end() // stream specific @@ -65,6 +66,10 @@ class Configuration ->ifTrue(function($v) { return 'fingerscrossed' === $v['type'] && !isset($v['handler']); }) ->thenInvalid('The handler has to be specified to use a FingersCrossedHandler') ->end() + ->validate() + ->ifTrue(function($v) { return 'service' === $v['type'] && !isset($v['id']); }) + ->thenInvalid('The id has to be specified to use a service as handler') + ->end() ->end() ->end() ->end() diff --git a/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php b/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php index 5ea39a87be..7ca98719d6 100644 --- a/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php +++ b/src/Symfony/Bundle/MonologBundle/DependencyInjection/MonologExtension.php @@ -81,6 +81,10 @@ class MonologExtension extends Extension $handler['level'] = is_int($handler['level']) ? $handler['level'] : constant('Monolog\Logger::'.strtoupper($handler['level'])); switch ($handler['type']) { + case 'service': + $container->setAlias($handlerId, $handler['id']); + return $handlerId; + case 'stream': if (!isset($handler['path'])) { $handler['path'] = '%kernel.logs_dir%/%kernel.environment%.log'; @@ -108,6 +112,7 @@ class MonologExtension extends Extension $handler['bubble'], )); break; + default: // Handler using the constructor of AbstractHandler without adding their own arguments $definition->setArguments(array( diff --git a/src/Symfony/Bundle/MonologBundle/Resources/config/schema/monolog-1.0.xsd b/src/Symfony/Bundle/MonologBundle/Resources/config/schema/monolog-1.0.xsd index eb7bb910c2..daf423caac 100644 --- a/src/Symfony/Bundle/MonologBundle/Resources/config/schema/monolog-1.0.xsd +++ b/src/Symfony/Bundle/MonologBundle/Resources/config/schema/monolog-1.0.xsd @@ -22,6 +22,7 @@ +