diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index eea9347f..33e40f6b 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -446,6 +446,7 @@ public function getConfigTreeBuilder(): TreeBuilder ->end() ->end() ->scalarNode('id')->end() // service & rollbar + ->scalarNode('enabled')->defaultTrue()->end() ->scalarNode('priority')->defaultValue(0)->end() ->scalarNode('level')->defaultValue('DEBUG')->end() ->booleanNode('bubble')->defaultTrue()->end() diff --git a/DependencyInjection/MonologExtension.php b/DependencyInjection/MonologExtension.php index 0e64f088..a92565ef 100644 --- a/DependencyInjection/MonologExtension.php +++ b/DependencyInjection/MonologExtension.php @@ -75,6 +75,9 @@ public function load(array $configs, ContainerBuilder $container) $handlers = []; foreach ($config['handlers'] as $name => $handler) { + if(false === $handler['enabled']) { + continue; + } $handlers[$handler['priority']][] = [ 'id' => $this->buildHandler($container, $name, $handler), 'channels' => empty($handler['channels']) ? null : $handler['channels'], diff --git a/Tests/DependencyInjection/Compiler/LoggerChannelPassTest.php b/Tests/DependencyInjection/Compiler/LoggerChannelPassTest.php index 7ed07452..f1756ac3 100644 --- a/Tests/DependencyInjection/Compiler/LoggerChannelPassTest.php +++ b/Tests/DependencyInjection/Compiler/LoggerChannelPassTest.php @@ -14,6 +14,7 @@ use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; use Symfony\Bundle\MonologBundle\DependencyInjection\Compiler\LoggerChannelPass; +use Symfony\Bundle\MonologBundle\DependencyInjection\MonologExtension; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -232,6 +233,48 @@ private function getFunctionalContainer() return $container; } + + public function testEnabledHandler() + { + $container = new ContainerBuilder(); + $loader = new MonologExtension(); + + $config = [ + 'handlers' => [ + 'main' => [ + 'enabled' => true, + 'type' => 'stream', + 'path' => '%kernel.logs_dir%/%kernel.environment%.log', + 'level' => 'debug', + ], + ], + ]; + + $loader->load([$config], $container); + + $this->assertTrue($container->hasDefinition('monolog.handler.main')); + } + + public function testDisabledHandler() + { + $container = new ContainerBuilder(); + $loader = new MonologExtension(); + + $config = [ + 'handlers' => [ + 'main' => [ + 'enabled' => false, + 'type' => 'stream', + 'path' => '%kernel.logs_dir%/%kernel.environment%.log', + 'level' => 'debug', + ], + ], + ]; + + $loader->load([$config], $container); + + $this->assertFalse($container->hasDefinition('monolog.handler.main')); + } } class DummyService