Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 480d30f

Browse filesBrowse files
[Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware
1 parent 18cd342 commit 480d30f
Copy full SHA for 480d30f

File tree

11 files changed

+77
-31
lines changed
Filter options

11 files changed

+77
-31
lines changed

‎UPGRADE-4.3.md

Copy file name to clipboardExpand all lines: UPGRADE-4.3.md
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Messenger
5555
---------
5656

5757
* `Amqp` transport does not throw `\AMQPException` anymore, catch `TransportException` instead.
58+
* Deprecated the `LoggingMiddleware` class, pass a logger to `SendMessageMiddleware` instead.
5859

5960
Routing
6061
-------

‎UPGRADE-5.0.md

Copy file name to clipboardExpand all lines: UPGRADE-5.0.md
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,11 @@ HttpKernel
205205
* Removed `ConfigDataCollector::getApplicationName()`
206206
* Removed `ConfigDataCollector::getApplicationVersion()`
207207

208+
Messenger
209+
---------
210+
211+
* The `LoggingMiddleware` class has been removed, pass a logger to `SendMessageMiddleware` instead.
212+
208213
Monolog
209214
-------
210215

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+5-5Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,19 +1575,19 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
15751575
}
15761576

15771577
$defaultMiddleware = [
1578-
'before' => [['id' => 'logging']],
1579-
'after' => [['id' => 'send_message'], ['id' => 'handle_message']],
1578+
['id' => 'send_message'],
1579+
['id' => 'handle_message'],
15801580
];
15811581
foreach ($config['buses'] as $busId => $bus) {
15821582
$middleware = $bus['middleware'];
15831583

15841584
if ($bus['default_middleware']) {
15851585
if ('allow_no_handlers' === $bus['default_middleware']) {
1586-
$defaultMiddleware['after'][1]['arguments'] = [true];
1586+
$defaultMiddleware[1]['arguments'] = [true];
15871587
} else {
1588-
unset($defaultMiddleware['after'][1]['arguments']);
1588+
unset($defaultMiddleware[1]['arguments']);
15891589
}
1590-
$middleware = array_merge($defaultMiddleware['before'], $middleware, $defaultMiddleware['after']);
1590+
$middleware = array_merge($middleware, $defaultMiddleware);
15911591
}
15921592

15931593
foreach ($middleware as $middlewareItem) {

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml
+8-6Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313
<argument type="collection" /> <!-- Messages to send and handle -->
1414
</service>
1515
<service id="messenger.middleware.send_message" class="Symfony\Component\Messenger\Middleware\SendMessageMiddleware">
16+
<tag name="monolog.logger" channel="messenger" />
1617
<argument type="service" id="messenger.senders_locator" />
18+
<call method="setLogger">
19+
<argument type="service" id="logger" on-invalid="ignore" />
20+
</call>
1721
</service>
1822

1923
<!-- Message encoding/decoding -->
@@ -28,7 +32,11 @@
2832

2933
<!-- Middleware -->
3034
<service id="messenger.middleware.handle_message" class="Symfony\Component\Messenger\Middleware\HandleMessageMiddleware" abstract="true">
35+
<tag name="monolog.logger" channel="messenger" />
3136
<argument /> <!-- Bus handler resolver -->
37+
<call method="setLogger">
38+
<argument type="service" id="logger" on-invalid="ignore" />
39+
</call>
3240
</service>
3341

3442
<service id="messenger.middleware.validation" class="Symfony\Component\Messenger\Middleware\ValidationMiddleware">
@@ -39,12 +47,6 @@
3947
<argument type="service" id="debug.stopwatch" />
4048
</service>
4149

42-
<!-- Logging -->
43-
<service id="messenger.middleware.logging" class="Symfony\Component\Messenger\Middleware\LoggingMiddleware">
44-
<tag name="monolog.logger" channel="messenger" />
45-
<argument type="service" id="logger" />
46-
</service>
47-
4850
<!-- Discovery -->
4951
<service id="messenger.receiver_locator">
5052
<tag name="container.service_locator" />

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php
-2Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -694,14 +694,12 @@ public function testMessengerWithMultipleBuses()
694694
$this->assertTrue($container->has('messenger.bus.commands'));
695695
$this->assertSame([], $container->getDefinition('messenger.bus.commands')->getArgument(0));
696696
$this->assertEquals([
697-
['id' => 'logging'],
698697
['id' => 'send_message'],
699698
['id' => 'handle_message'],
700699
], $container->getParameter('messenger.bus.commands.middleware'));
701700
$this->assertTrue($container->has('messenger.bus.events'));
702701
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
703702
$this->assertEquals([
704-
['id' => 'logging'],
705703
['id' => 'with_factory', 'arguments' => ['foo', true, ['bar' => 'baz']]],
706704
['id' => 'send_message'],
707705
['id' => 'handle_message'],

‎src/Symfony/Component/Messenger/CHANGELOG.md

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/CHANGELOG.md
+1-3Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@ CHANGELOG
66

77
* Added `PhpSerializer` which uses PHP's native `serialize()` and
88
`unserialize()` to serialize messages to a transport
9-
109
* [BC BREAK] If no serializer were passed, the default serializer
1110
changed from `Serializer` to `PhpSerializer` inside `AmqpReceiver`,
1211
`AmqpSender`, `AmqpTransport` and `AmqpTransportFactory`.
13-
1412
* Added `TransportException` to mark an exception transport-related
15-
1613
* [BC BREAK] If listening to exceptions while using `AmqpSender` or `AmqpReceiver`, `\AMQPException` is
1714
no longer thrown in favor of `TransportException`.
15+
* Deprecated `LoggingMiddleware`, pass a logger to `SendMessageMiddleware` instead.
1816

1917
4.2.0
2018
-----

‎src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php
+21-3Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Symfony\Component\Messenger\Middleware;
1313

14+
use Psr\Log\LoggerAwareTrait;
15+
use Psr\Log\NullLogger;
1416
use Symfony\Component\Messenger\Envelope;
1517
use Symfony\Component\Messenger\Exception\NoHandlerForMessageException;
1618
use Symfony\Component\Messenger\Handler\HandlersLocatorInterface;
@@ -23,13 +25,16 @@
2325
*/
2426
class HandleMessageMiddleware implements MiddlewareInterface
2527
{
28+
use LoggerAwareTrait;
29+
2630
private $handlersLocator;
2731
private $allowNoHandlers;
2832

2933
public function __construct(HandlersLocatorInterface $handlersLocator, bool $allowNoHandlers = false)
3034
{
3135
$this->handlersLocator = $handlersLocator;
3236
$this->allowNoHandlers = $allowNoHandlers;
37+
$this->logger = new NullLogger();
3338
}
3439

3540
/**
@@ -41,11 +46,24 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
4146
{
4247
$handler = null;
4348
$message = $envelope->getMessage();
49+
50+
$context = [
51+
'message' => $message,
52+
'class' => \get_class($message),
53+
];
54+
4455
foreach ($this->handlersLocator->getHandlers($envelope) as $alias => $handler) {
45-
$envelope = $envelope->with(HandledStamp::fromCallable($handler, $handler($message), \is_string($alias) ? $alias : null));
56+
$handledStamp = HandledStamp::fromCallable($handler, $handler($message), \is_string($alias) ? $alias : null);
57+
$envelope = $envelope->with($handledStamp);
58+
$this->logger->debug('Message "{class}" handled by "{handler}"', $context + ['handler' => $handledStamp->getCallableName()]);
4659
}
47-
if (null === $handler && !$this->allowNoHandlers) {
48-
throw new NoHandlerForMessageException(sprintf('No handler for message "%s".', \get_class($envelope->getMessage())));
60+
61+
if (null === $handler) {
62+
if (!$this->allowNoHandlers) {
63+
throw new NoHandlerForMessageException(sprintf('No handler for message "%s".', $context['class']));
64+
}
65+
66+
$this->logger->debug('No handler for message "{class}"', $context);
4967
}
5068

5169
return $stack->next()->handle($envelope, $stack);

‎src/Symfony/Component/Messenger/Middleware/LoggingMiddleware.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Middleware/LoggingMiddleware.php
+3-1Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111

1212
namespace Symfony\Component\Messenger\Middleware;
1313

14+
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, pass a logger to SendMessageMiddleware instead.', LoggingMiddleware::class), E_USER_DEPRECATED);
15+
1416
use Psr\Log\LoggerInterface;
1517
use Symfony\Component\Messenger\Envelope;
1618

1719
/**
1820
* @author Samuel Roze <samuel.roze@gmail.com>
1921
*
20-
* @experimental in 4.2
22+
* @deprecated since 4.3, pass a logger to SendMessageMiddleware instead
2123
*/
2224
class LoggingMiddleware implements MiddlewareInterface
2325
{

‎src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php
+28-9Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Symfony\Component\Messenger\Middleware;
1313

14+
use Psr\Log\LoggerAwareTrait;
15+
use Psr\Log\NullLogger;
1416
use Symfony\Component\Messenger\Envelope;
1517
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
1618
use Symfony\Component\Messenger\Stamp\SentStamp;
@@ -24,31 +26,48 @@
2426
*/
2527
class SendMessageMiddleware implements MiddlewareInterface
2628
{
29+
use LoggerAwareTrait;
30+
2731
private $sendersLocator;
2832

2933
public function __construct(SendersLocatorInterface $sendersLocator)
3034
{
3135
$this->sendersLocator = $sendersLocator;
36+
$this->logger = new NullLogger();
3237
}
3338

3439
/**
3540
* {@inheritdoc}
3641
*/
3742
public function handle(Envelope $envelope, StackInterface $stack): Envelope
3843
{
39-
if ($envelope->all(ReceivedStamp::class)) {
40-
// it's a received message, do not send it back
41-
return $stack->next()->handle($envelope, $stack);
42-
}
44+
$context = [
45+
'message' => $envelope->getMessage(),
46+
'class' => \get_class($envelope->getMessage()),
47+
];
48+
4349
$handle = false;
4450
$sender = null;
4551

46-
foreach ($this->sendersLocator->getSenders($envelope, $handle) as $alias => $sender) {
47-
$envelope = $sender->send($envelope)->with(new SentStamp(\get_class($sender), \is_string($alias) ? $alias : null));
48-
}
52+
try {
53+
if ($envelope->all(ReceivedStamp::class)) {
54+
// it's a received message, do not send it back
55+
$this->logger->debug('Received message "{class}"', $context);
56+
} else {
57+
foreach ($this->sendersLocator->getSenders($envelope, $handle) as $alias => $sender) {
58+
$this->logger->debug('Sending message "{class}" with "{sender}"', $context + ['sender' => \get_class($sender)]);
59+
$envelope = $sender->send($envelope)->with(new SentStamp(\get_class($sender), \is_string($alias) ? $alias : null));
60+
}
61+
}
62+
63+
if (null === $sender || $handle) {
64+
return $stack->next()->handle($envelope, $stack);
65+
}
66+
} catch (\Throwable $e) {
67+
$context['exception'] = $e;
68+
$this->logger->warning('An exception occurred while handling message "{class}"', $context);
4969

50-
if (null === $sender || $handle) {
51-
return $stack->next()->handle($envelope, $stack);
70+
throw $e;
5271
}
5372

5473
// message should only be sent and not be handled by the next middleware

‎src/Symfony/Component/Messenger/Tests/Middleware/LoggingMiddlewareTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/Middleware/LoggingMiddlewareTest.php
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1818
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1919

20+
/**
21+
* @group legacy
22+
*/
2023
class LoggingMiddlewareTest extends MiddlewareTestCase
2124
{
2225
public function testDebugLogAndNextMiddleware()

‎src/Symfony/Component/Messenger/composer.json

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/composer.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
}
1717
],
1818
"require": {
19-
"php": "^7.1.3"
19+
"php": "^7.1.3",
20+
"psr/log": "~1.0"
2021
},
2122
"require-dev": {
22-
"psr/log": "~1.0",
2323
"symfony/console": "~3.4|~4.0",
2424
"symfony/dependency-injection": "~3.4.19|^4.1.8",
2525
"symfony/http-kernel": "~3.4|~4.0",

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.