diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index 8d63cc7b..6e76e06a 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -283,14 +283,11 @@ class Logger implements LoggerInterface // check if any handler will handle this message so we can return early and save cycles $handlerKey = null; - reset($this->handlers); - while ($handler = current($this->handlers)) { + foreach ($this->handlers as $key => $handler) { if ($handler->isHandling(['level' => $level])) { - $handlerKey = key($this->handlers); + $handlerKey = $key; break; } - - next($this->handlers); } if (null === $handlerKey) { @@ -311,7 +308,17 @@ class Logger implements LoggerInterface $record = call_user_func($processor, $record); } + reset($this->handlers); + $skip = true; while ($handler = current($this->handlers)) { + if ($skip) { + if ($key !== key($this->handlers)) { + next($this->handlers); + continue; + } + $skip = false; + } + if (true === $handler->handle($record)) { break; }