diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index f942c1a1..bfbe20cf 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -281,14 +281,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,6 +308,12 @@ class Logger implements LoggerInterface $record = call_user_func($processor, $record); } + // advance the array pointer to the first handler that will handle this record + reset($this->handlers); + while ($handlerKey !== key($this->handlers)) { + next($this->handlers); + } + while ($handler = current($this->handlers)) { if (true === $handler->handle($record)) { break;