Skip to content

Commit 85afe67

Browse files
committed
Pass logger from options to TransportFactory
1 parent ca318a6 commit 85afe67

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/DependencyInjection/SentryExtension.php

Lines changed: 15 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;
@@ -37,6 +38,11 @@
3738
use Symfony\Component\ErrorHandler\Error\FatalError;
3839
use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
3940

41+
use function array_filter;
42+
use function array_map;
43+
use function array_unshift;
44+
use function class_exists;
45+
4046
final class SentryExtension extends ConfigurableExtension
4147
{
4248
/**
@@ -124,14 +130,22 @@ private function registerConfiguration(ContainerBuilder $container, array $confi
124130
->setPublic(false)
125131
->setArgument(0, new Reference('sentry.client.options'));
126132

133+
$loggerReference = null === $config['logger']
134+
? new Reference(NullLogger::class, ContainerBuilder::IGNORE_ON_INVALID_REFERENCE)
135+
: new Reference($config['logger']);
136+
137+
$factoryBuilderDefinition = $container->getDefinition(TransportFactoryInterface::class);
138+
$factoryBuilderDefinition->setArgument('$httpClient', null);
139+
$factoryBuilderDefinition->setArgument('$logger', $loggerReference);
140+
127141
$clientBuilderDefinition = (new Definition(ClientBuilder::class))
128142
->setArgument(0, new Reference('sentry.client.options'))
129143
->addMethodCall('setSdkIdentifier', [SentryBundle::SDK_IDENTIFIER])
130144
->addMethodCall('setSdkVersion', [PrettyVersions::getVersion('sentry/sentry-symfony')->getPrettyVersion()])
131145
->addMethodCall('setTransportFactory', [new Reference($config['transport_factory'])])
132146
->addMethodCall('setSerializer', [$serializer])
133147
->addMethodCall('setRepresentationSerializer', [$representationSerializerDefinition])
134-
->addMethodCall('setLogger', [null !== $config['logger'] ? new Reference($config['logger']) : new Reference(NullLogger::class, ContainerBuilder::IGNORE_ON_INVALID_REFERENCE)]);
148+
->addMethodCall('setLogger', [$loggerReference]);
135149

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

tests/DependencyInjection/SentryExtensionTest.php

Lines changed: 10 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,15 @@ 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+
$this->assertSame('app.logger', $logger->__toString());
256+
}
257+
248258
public function testErrorTypesOptionIsParsedFromStringToIntegerValue(): void
249259
{
250260
$container = $this->createContainerFromFixture('error_types');

0 commit comments

Comments
 (0)