feature #39378 [Messenger] Use "warning" instead of "error" log level for RecoverableException (lyrixx)
This PR was merged into the 5.3-dev branch.
Discussion
----------
[Messenger] Use "warning" instead of "error" log level for RecoverableException
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
When one throw a `RecoverableExceptionInterface`, one knows somethings
wrong occurs, so if an `error` should be emmited, it's in place where the
exception is thrown.
And, by extension, if nothing really wrong occurs (like a random network
error), one may want to retry the message **without** any errors.
That's why in this PR, if an exception of type `RecoverableExceptionInterface`
is thrown, it uses `warning` insteand of `error` log level. So
everything stay under the radar.
Commits
-------
a885ba844d
[Messenger] Use "warning" intead of "error" log level for RecoverableException
This commit is contained in:
commit
8b8bffb83b
@ -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
|
||||
|
Reference in New Issue
Block a user