/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php |
@@ -0,0 +1,104 @@ |
<?php |
|
/* |
* This file is part of the Monolog package. |
* |
* (c) Jordi Boggiano <j.boggiano@seld.be> |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
|
namespace Monolog\Handler; |
|
use Monolog\Formatter\FormatterInterface; |
|
/** |
* Forwards records to multiple handlers |
* |
* @author Lenar Lõhmus <lenar@city.ee> |
*/ |
class GroupHandler extends AbstractHandler |
{ |
protected $handlers; |
|
/** |
* @param array $handlers Array of Handlers. |
* @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not |
*/ |
public function __construct(array $handlers, $bubble = true) |
{ |
foreach ($handlers as $handler) { |
if (!$handler instanceof HandlerInterface) { |
throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.'); |
} |
} |
|
$this->handlers = $handlers; |
$this->bubble = $bubble; |
} |
|
/** |
* {@inheritdoc} |
*/ |
public function isHandling(array $record) |
{ |
foreach ($this->handlers as $handler) { |
if ($handler->isHandling($record)) { |
return true; |
} |
} |
|
return false; |
} |
|
/** |
* {@inheritdoc} |
*/ |
public function handle(array $record) |
{ |
if ($this->processors) { |
foreach ($this->processors as $processor) { |
$record = call_user_func($processor, $record); |
} |
} |
|
foreach ($this->handlers as $handler) { |
$handler->handle($record); |
} |
|
return false === $this->bubble; |
} |
|
/** |
* {@inheritdoc} |
*/ |
public function handleBatch(array $records) |
{ |
if ($this->processors) { |
$processed = array(); |
foreach ($records as $record) { |
foreach ($this->processors as $processor) { |
$processed[] = call_user_func($processor, $record); |
} |
} |
$records = $processed; |
} |
|
foreach ($this->handlers as $handler) { |
$handler->handleBatch($records); |
} |
} |
|
/** |
* {@inheritdoc} |
*/ |
public function setFormatter(FormatterInterface $formatter) |
{ |
foreach ($this->handlers as $handler) { |
$handler->setFormatter($formatter); |
} |
|
return $this; |
} |
} |