*
- * @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