Added support of custom handlers defined as services

This commit is contained in:
Christophe Coevoet 2011-03-19 23:41:46 +01:00
parent 9d3acf3073
commit 5aaf8bc1b1
3 changed files with 11 additions and 0 deletions

View File

@ -52,6 +52,7 @@ class Configuration
->then(function($v) { return strtolower($v); }) ->then(function($v) { return strtolower($v); })
->end() ->end()
->end() ->end()
->scalarNode('id')->end()
->scalarNode('level')->defaultValue('DEBUG')->end() ->scalarNode('level')->defaultValue('DEBUG')->end()
->booleanNode('bubble')->defaultFalse()->end() ->booleanNode('bubble')->defaultFalse()->end()
->scalarNode('path')->end() // stream specific ->scalarNode('path')->end() // stream specific
@ -65,6 +66,10 @@ class Configuration
->ifTrue(function($v) { return 'fingerscrossed' === $v['type'] && !isset($v['handler']); }) ->ifTrue(function($v) { return 'fingerscrossed' === $v['type'] && !isset($v['handler']); })
->thenInvalid('The handler has to be specified to use a FingersCrossedHandler') ->thenInvalid('The handler has to be specified to use a FingersCrossedHandler')
->end() ->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() ->end()
->end() ->end()

View File

@ -81,6 +81,10 @@ class MonologExtension extends Extension
$handler['level'] = is_int($handler['level']) ? $handler['level'] : constant('Monolog\Logger::'.strtoupper($handler['level'])); $handler['level'] = is_int($handler['level']) ? $handler['level'] : constant('Monolog\Logger::'.strtoupper($handler['level']));
switch ($handler['type']) { switch ($handler['type']) {
case 'service':
$container->setAlias($handlerId, $handler['id']);
return $handlerId;
case 'stream': case 'stream':
if (!isset($handler['path'])) { if (!isset($handler['path'])) {
$handler['path'] = '%kernel.logs_dir%/%kernel.environment%.log'; $handler['path'] = '%kernel.logs_dir%/%kernel.environment%.log';
@ -108,6 +112,7 @@ class MonologExtension extends Extension
$handler['bubble'], $handler['bubble'],
)); ));
break; break;
default: default:
// Handler using the constructor of AbstractHandler without adding their own arguments // Handler using the constructor of AbstractHandler without adding their own arguments
$definition->setArguments(array( $definition->setArguments(array(

View File

@ -22,6 +22,7 @@
<xsd:attribute name="level" type="level" /> <xsd:attribute name="level" type="level" />
<xsd:attribute name="bubble" type="xsd:boolean" /> <xsd:attribute name="bubble" type="xsd:boolean" />
<xsd:attribute name="path" type="xsd:string" /> <xsd:attribute name="path" type="xsd:string" />
<xsd:attribute name="id" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" use="required"> <xsd:attribute name="name" type="xsd:string" use="required">
<xsd:attribute name="action-level" type="level" /> <xsd:attribute name="action-level" type="level" />
<xsd:attribute name="buffer-size" type="xsd:integer" /> <xsd:attribute name="buffer-size" type="xsd:integer" />