From a885ba844dc9a4ec2d08cf1ef33f499a9b5d3ffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Pineau?= Date: Tue, 8 Dec 2020 10:59:12 +0100 Subject: [PATCH] [Messenger] Use "warning" intead of "error" log level for RecoverableException --- .../SendFailedMessageForRetryListener.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php b/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php index ff330cd38c..bd42cebcc5 100644 --- a/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php +++ b/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php @@ -12,6 +12,7 @@ namespace Symfony\Component\Messenger\EventListener; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent; @@ -70,7 +71,18 @@ class SendFailedMessageForRetryListener implements EventSubscriberInterface $delay = $retryStrategy->getWaitingTime($envelope, $throwable); if (null !== $this->logger) { - $this->logger->error('Error thrown while handling message {class}. Sending for retry #{retryCount} using {delay} ms delay. Error: "{error}"', $context + ['retryCount' => $retryCount, 'delay' => $delay, 'error' => $throwable->getMessage(), 'exception' => $throwable]); + $logLevel = LogLevel::ERROR; + if ($throwable instanceof RecoverableExceptionInterface) { + $logLevel = LogLevel::WARNING; + } elseif ($throwable instanceof HandlerFailedException) { + foreach ($throwable->getNestedExceptions() as $nestedException) { + if ($nestedException instanceof RecoverableExceptionInterface) { + $logLevel = LogLevel::WARNING; + break; + } + } + } + $this->logger->log($logLevel, 'Error thrown while handling message {class}. Sending for retry #{retryCount} using {delay} ms delay. Error: "{error}"', $context + ['retryCount' => $retryCount, 'delay' => $delay, 'error' => $throwable->getMessage(), 'exception' => $throwable]); } // add the delay and retry stamp info