diff --git a/UPGRADE-4.3.md b/UPGRADE-4.3.md index dc19c8b360947..5415884901775 100644 --- a/UPGRADE-4.3.md +++ b/UPGRADE-4.3.md @@ -61,6 +61,7 @@ Messenger --------- * `Amqp` transport does not throw `\AMQPException` anymore, catch `TransportException` instead. + * Deprecated the `LoggingMiddleware` class, pass a logger to `SendMessageMiddleware` instead. Routing ------- diff --git a/UPGRADE-5.0.md b/UPGRADE-5.0.md index 8232d24a42ab1..3662374ef83e4 100644 --- a/UPGRADE-5.0.md +++ b/UPGRADE-5.0.md @@ -207,6 +207,11 @@ HttpKernel * Removed `ConfigDataCollector::getApplicationName()` * Removed `ConfigDataCollector::getApplicationVersion()` +Messenger +--------- + + * The `LoggingMiddleware` class has been removed, pass a logger to `SendMessageMiddleware` instead. + Monolog ------- diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 240912b33b329..391408a348f4c 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -1598,7 +1598,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder } $defaultMiddleware = [ - 'before' => [['id' => 'logging']], + 'before' => [], 'after' => [['id' => 'send_message'], ['id' => 'handle_message']], ]; foreach ($config['buses'] as $busId => $bus) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml index 1be0a9977c2e4..4997fdf5d0f1a 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml @@ -13,7 +13,11 @@ + + + + @@ -28,7 +32,11 @@ + + + + @@ -39,12 +47,6 @@ - - - - - - diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php index 1afe5f199c14d..1bbd048319b5a 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php @@ -701,14 +701,12 @@ public function testMessengerWithMultipleBuses() $this->assertTrue($container->has('messenger.bus.commands')); $this->assertSame([], $container->getDefinition('messenger.bus.commands')->getArgument(0)); $this->assertEquals([ - ['id' => 'logging'], ['id' => 'send_message'], ['id' => 'handle_message'], ], $container->getParameter('messenger.bus.commands.middleware')); $this->assertTrue($container->has('messenger.bus.events')); $this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0)); $this->assertEquals([ - ['id' => 'logging'], ['id' => 'with_factory', 'arguments' => ['foo', true, ['bar' => 'baz']]], ['id' => 'send_message'], ['id' => 'handle_message'], diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index b7f604f41c00c..7166c1b832dd4 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -6,15 +6,13 @@ CHANGELOG * Added `PhpSerializer` which uses PHP's native `serialize()` and `unserialize()` to serialize messages to a transport - * [BC BREAK] If no serializer were passed, the default serializer changed from `Serializer` to `PhpSerializer` inside `AmqpReceiver`, `AmqpSender`, `AmqpTransport` and `AmqpTransportFactory`. - * Added `TransportException` to mark an exception transport-related - * [BC BREAK] If listening to exceptions while using `AmqpSender` or `AmqpReceiver`, `\AMQPException` is no longer thrown in favor of `TransportException`. + * Deprecated `LoggingMiddleware`, pass a logger to `SendMessageMiddleware` instead. 4.2.0 ----- diff --git a/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php b/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php index f50816b34976e..5f854f257f792 100644 --- a/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php +++ b/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php @@ -170,8 +170,8 @@ protected function execute(InputInterface $input, OutputInterface $output): void $io->comment('Quit the worker with CONTROL-C.'); - if (!$output->isDebug()) { - $io->comment('Re-run the command with a -vvv option to see logs about consumed messages.'); + if (OutputInterface::VERBOSITY_VERBOSE > $output->getVerbosity()) { + $io->comment('Re-run the command with a -vv option to see logs about consumed messages.'); } $worker = new Worker($receiver, $bus); diff --git a/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php b/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php index ba89051f24d3e..ed47ac6389128 100644 --- a/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php +++ b/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Messenger\Middleware; +use Psr\Log\LoggerAwareTrait; +use Psr\Log\NullLogger; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Exception\NoHandlerForMessageException; use Symfony\Component\Messenger\Handler\HandlersLocatorInterface; @@ -23,6 +25,8 @@ */ class HandleMessageMiddleware implements MiddlewareInterface { + use LoggerAwareTrait; + private $handlersLocator; private $allowNoHandlers; @@ -30,6 +34,7 @@ public function __construct(HandlersLocatorInterface $handlersLocator, bool $all { $this->handlersLocator = $handlersLocator; $this->allowNoHandlers = $allowNoHandlers; + $this->logger = new NullLogger(); } /** @@ -41,11 +46,24 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope { $handler = null; $message = $envelope->getMessage(); + + $context = [ + 'message' => $message, + 'class' => \get_class($message), + ]; + foreach ($this->handlersLocator->getHandlers($envelope) as $alias => $handler) { - $envelope = $envelope->with(HandledStamp::fromCallable($handler, $handler($message), \is_string($alias) ? $alias : null)); + $handledStamp = HandledStamp::fromCallable($handler, $handler($message), \is_string($alias) ? $alias : null); + $envelope = $envelope->with($handledStamp); + $this->logger->info('Message "{class}" handled by "{handler}"', $context + ['handler' => $handledStamp->getCallableName()]); } - if (null === $handler && !$this->allowNoHandlers) { - throw new NoHandlerForMessageException(sprintf('No handler for message "%s".', \get_class($envelope->getMessage()))); + + if (null === $handler) { + if (!$this->allowNoHandlers) { + throw new NoHandlerForMessageException(sprintf('No handler for message "%s".', $context['class'])); + } + + $this->logger->info('No handler for message "{class}"', $context); } return $stack->next()->handle($envelope, $stack); diff --git a/src/Symfony/Component/Messenger/Middleware/LoggingMiddleware.php b/src/Symfony/Component/Messenger/Middleware/LoggingMiddleware.php index 7518d018b8375..a2941055fa67d 100644 --- a/src/Symfony/Component/Messenger/Middleware/LoggingMiddleware.php +++ b/src/Symfony/Component/Messenger/Middleware/LoggingMiddleware.php @@ -11,13 +11,15 @@ namespace Symfony\Component\Messenger\Middleware; +@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, pass a logger to SendMessageMiddleware instead.', LoggingMiddleware::class), E_USER_DEPRECATED); + use Psr\Log\LoggerInterface; use Symfony\Component\Messenger\Envelope; /** * @author Samuel Roze * - * @experimental in 4.2 + * @deprecated since 4.3, pass a logger to SendMessageMiddleware instead */ class LoggingMiddleware implements MiddlewareInterface { diff --git a/src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php b/src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php index 7c0ee4a488874..6d6696a4721bd 100644 --- a/src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php +++ b/src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Messenger\Middleware; +use Psr\Log\LoggerAwareTrait; +use Psr\Log\NullLogger; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Stamp\ReceivedStamp; use Symfony\Component\Messenger\Stamp\SentStamp; @@ -24,11 +26,14 @@ */ class SendMessageMiddleware implements MiddlewareInterface { + use LoggerAwareTrait; + private $sendersLocator; public function __construct(SendersLocatorInterface $sendersLocator) { $this->sendersLocator = $sendersLocator; + $this->logger = new NullLogger(); } /** @@ -36,19 +41,33 @@ public function __construct(SendersLocatorInterface $sendersLocator) */ public function handle(Envelope $envelope, StackInterface $stack): Envelope { - if ($envelope->all(ReceivedStamp::class)) { - // it's a received message, do not send it back - return $stack->next()->handle($envelope, $stack); - } + $context = [ + 'message' => $envelope->getMessage(), + 'class' => \get_class($envelope->getMessage()), + ]; + $handle = false; $sender = null; - foreach ($this->sendersLocator->getSenders($envelope, $handle) as $alias => $sender) { - $envelope = $sender->send($envelope)->with(new SentStamp(\get_class($sender), \is_string($alias) ? $alias : null)); - } + try { + if ($envelope->all(ReceivedStamp::class)) { + // it's a received message, do not send it back + $this->logger->info('Received message "{class}"', $context); + } else { + foreach ($this->sendersLocator->getSenders($envelope, $handle) as $alias => $sender) { + $this->logger->info('Sending message "{class}" with "{sender}"', $context + ['sender' => \get_class($sender)]); + $envelope = $sender->send($envelope)->with(new SentStamp(\get_class($sender), \is_string($alias) ? $alias : null)); + } + } + + if (null === $sender || $handle) { + return $stack->next()->handle($envelope, $stack); + } + } catch (\Throwable $e) { + $context['exception'] = $e; + $this->logger->warning('An exception occurred while handling message "{class}"', $context); - if (null === $sender || $handle) { - return $stack->next()->handle($envelope, $stack); + throw $e; } // message should only be sent and not be handled by the next middleware diff --git a/src/Symfony/Component/Messenger/Tests/Middleware/LoggingMiddlewareTest.php b/src/Symfony/Component/Messenger/Tests/Middleware/LoggingMiddlewareTest.php index b8f401535931f..675ff76730471 100644 --- a/src/Symfony/Component/Messenger/Tests/Middleware/LoggingMiddlewareTest.php +++ b/src/Symfony/Component/Messenger/Tests/Middleware/LoggingMiddlewareTest.php @@ -17,6 +17,9 @@ use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase; use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage; +/** + * @group legacy + */ class LoggingMiddlewareTest extends MiddlewareTestCase { public function testDebugLogAndNextMiddleware() diff --git a/src/Symfony/Component/Messenger/composer.json b/src/Symfony/Component/Messenger/composer.json index f828b64451943..d0b6fe31f9888 100644 --- a/src/Symfony/Component/Messenger/composer.json +++ b/src/Symfony/Component/Messenger/composer.json @@ -16,10 +16,10 @@ } ], "require": { - "php": "^7.1.3" + "php": "^7.1.3", + "psr/log": "~1.0" }, "require-dev": { - "psr/log": "~1.0", "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4.19|^4.1.8", "symfony/http-kernel": "~3.4|~4.0", pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy