Movatterモバイル変換


[0]ホーム

URL:


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

Sign up
Appearance settings

Commit480d30f

Browse files
[Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware
1 parent18cd342 commit480d30f

File tree

11 files changed

+77
-31
lines changed

11 files changed

+77
-31
lines changed

‎UPGRADE-4.3.md‎

Lines 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‎

Lines 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‎

Lines 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 ($middlewareas$middlewareItem) {

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313
<argumenttype="collection" /><!-- Messages to send and handle-->
1414
</service>
1515
<serviceid="messenger.middleware.send_message"class="Symfony\Component\Messenger\Middleware\SendMessageMiddleware">
16+
<tagname="monolog.logger"channel="messenger" />
1617
<argumenttype="service"id="messenger.senders_locator" />
18+
<callmethod="setLogger">
19+
<argumenttype="service"id="logger"on-invalid="ignore" />
20+
</call>
1721
</service>
1822

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

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

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

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

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

Lines 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‎

Lines 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‎

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespaceSymfony\Component\Messenger\Middleware;
1313

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

2933
publicfunction__construct(HandlersLocatorInterface$handlersLocator,bool$allowNoHandlers =false)
3034
{
3135
$this->handlersLocator =$handlersLocator;
3236
$this->allowNoHandlers =$allowNoHandlers;
37+
$this->logger =newNullLogger();
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-
thrownewNoHandlerForMessageException(sprintf('No handler for message "%s".',\get_class($envelope->getMessage())));
60+
61+
if (null ===$handler) {
62+
if (!$this->allowNoHandlers) {
63+
thrownewNoHandlerForMessageException(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‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111

1212
namespaceSymfony\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
usePsr\Log\LoggerInterface;
1517
useSymfony\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 LoggingMiddlewareimplements MiddlewareInterface
2325
{

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

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespaceSymfony\Component\Messenger\Middleware;
1313

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

2933
publicfunction__construct(SendersLocatorInterface$sendersLocator)
3034
{
3135
$this->sendersLocator =$sendersLocator;
36+
$this->logger =newNullLogger();
3237
}
3338

3439
/**
3540
* {@inheritdoc}
3641
*/
3742
publicfunctionhandle(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(newSentStamp(\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(newSentStamp(\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‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
useSymfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1818
useSymfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1919

20+
/**
21+
* @group legacy
22+
*/
2023
class LoggingMiddlewareTestextends MiddlewareTestCase
2124
{
2225
publicfunctiontestDebugLogAndNextMiddleware()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp