Skip to content

Commit cbbb6f8

Browse files
alexandre-abriouxlyrixx
authored andcommitted
Autoconfigure resettable processors with the kernel.reset tag
1 parent e0b661e commit cbbb6f8

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 3.6.1 (xxxx-xx-xx)
2+
3+
* Register resettable processors (`ResettableInterface`) for autoconfiguration (tag: `kernel.reset`)
4+
15
## 3.6.0 (2020-10-06)
26

37
* Added support for Symfony Mailer

DependencyInjection/MonologExtension.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ public function load(array $configs, ContainerBuilder $container)
150150
$container->registerForAutoconfiguration(WebProcessor::class)
151151
->addTag('monolog.processor');
152152
}
153+
if (interface_exists(ResettableInterface::class)) {
154+
$container->registerForAutoconfiguration(ResettableInterface::class)
155+
->addTag('kernel.reset', ['method' => 'reset']);
156+
}
153157
$container->registerForAutoconfiguration(TokenProcessor::class)
154158
->addTag('monolog.processor');
155159
if (interface_exists(HttpClientInterface::class)) {

Tests/DependencyInjection/MonologExtensionTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use InvalidArgumentException;
1515
use Monolog\Handler\RollbarHandler;
1616
use Monolog\Logger;
17+
use Monolog\Processor\UidProcessor;
1718
use Symfony\Bundle\MonologBundle\DependencyInjection\MonologExtension;
1819
use Symfony\Bundle\MonologBundle\DependencyInjection\Compiler\LoggerChannelPass;
1920
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -696,6 +697,24 @@ public function provideLoglevelParameterConfig()
696697
];
697698
}
698699

700+
public function testProcessorAutoConfiguration()
701+
{
702+
if (!interface_exists('Monolog\ResettableInterface')) {
703+
$this->markTestSkipped('The ResettableInterface is not available.');
704+
}
705+
$service = new Definition(UidProcessor::class);
706+
$service->setAutoconfigured(true);
707+
$container = $this->getContainer([], ['processor.uid' => $service]);
708+
$this->assertTrue($container->hasDefinition('processor.uid'));
709+
$processor = $container->getDefinition('processor.uid');
710+
$tags = $processor->getTags();
711+
$this->assertArrayHasKey('kernel.reset', $tags);
712+
$this->assertIsArray($tags['kernel.reset']);
713+
$this->assertCount(1, $tags['kernel.reset']);
714+
$this->assertIsArray($tags['kernel.reset'][0]);
715+
$this->assertArrayHasKey('method', $tags['kernel.reset'][0]);
716+
$this->assertEquals('reset', $tags['kernel.reset'][0]['method']);
717+
}
699718

700719
protected function getContainer(array $config = [], array $thirdPartyDefinitions = [])
701720
{

0 commit comments

Comments
 (0)