Skip to content

Commit 9adbc15

Browse files
committed
Pass logger from options to TransportFactory
1 parent ca318a6 commit 9adbc15

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/DependencyInjection/SentryExtension.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use Sentry\SentryBundle\Tracing\Twig\TwigTracingExtension;
2828
use Sentry\Serializer\RepresentationSerializer;
2929
use Sentry\Serializer\Serializer;
30+
use Sentry\Transport\TransportFactoryInterface;
3031
use Symfony\Bundle\TwigBundle\TwigBundle;
3132
use Symfony\Component\Cache\CacheItem;
3233
use Symfony\Component\Config\FileLocator;
@@ -124,14 +125,22 @@ private function registerConfiguration(ContainerBuilder $container, array $confi
124125
->setPublic(false)
125126
->setArgument(0, new Reference('sentry.client.options'));
126127

128+
$loggerReference = null === $config['logger']
129+
? new Reference(NullLogger::class, ContainerBuilder::IGNORE_ON_INVALID_REFERENCE)
130+
: new Reference($config['logger']);
131+
132+
$factoryBuilderDefinition = $container->getDefinition(TransportFactoryInterface::class);
133+
$factoryBuilderDefinition->setArgument('$httpClient', null);
134+
$factoryBuilderDefinition->setArgument('$logger', $loggerReference);
135+
127136
$clientBuilderDefinition = (new Definition(ClientBuilder::class))
128137
->setArgument(0, new Reference('sentry.client.options'))
129138
->addMethodCall('setSdkIdentifier', [SentryBundle::SDK_IDENTIFIER])
130139
->addMethodCall('setSdkVersion', [PrettyVersions::getVersion('sentry/sentry-symfony')->getPrettyVersion()])
131140
->addMethodCall('setTransportFactory', [new Reference($config['transport_factory'])])
132141
->addMethodCall('setSerializer', [$serializer])
133142
->addMethodCall('setRepresentationSerializer', [$representationSerializerDefinition])
134-
->addMethodCall('setLogger', [null !== $config['logger'] ? new Reference($config['logger']) : new Reference(NullLogger::class, ContainerBuilder::IGNORE_ON_INVALID_REFERENCE)]);
143+
->addMethodCall('setLogger', [$loggerReference]);
135144

136145
$container
137146
->setDefinition('sentry.client', new Definition(Client::class))

tests/DependencyInjection/SentryExtensionTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Sentry\SentryBundle\Tracing\Twig\TwigTracingExtension;
2727
use Sentry\Serializer\RepresentationSerializer;
2828
use Sentry\Serializer\Serializer;
29+
use Sentry\Transport\TransportFactoryInterface;
2930
use Symfony\Bundle\TwigBundle\TwigBundle;
3031
use Symfony\Component\Console\ConsoleEvents;
3132
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -245,6 +246,16 @@ public function testClientIsCreatedFromOptions(): void
245246
$this->assertEquals($methodCalls[4][1][0]->getArgument(0), new Reference('sentry.client.options'));
246247
}
247248

249+
public function testLoggerIsPassedToTransportFactory(): void
250+
{
251+
$container = $this->createContainerFromFixture('full');
252+
253+
$transportFactoryDefinition = $container->findDefinition(TransportFactoryInterface::class);
254+
$logger = $transportFactoryDefinition->getArgument('$logger');
255+
256+
$this->assertSame('app.logger', $logger->__toString());
257+
}
258+
248259
public function testErrorTypesOptionIsParsedFromStringToIntegerValue(): void
249260
{
250261
$container = $this->createContainerFromFixture('error_types');

0 commit comments

Comments
 (0)