<?php declare(strict_types=1); namespace Xentral\Components\Logger; use Xentral\Components\Logger\Context\ContextHelper; use Xentral\Components\Logger\Handler\MemoryLogHandler; final class MemoryLogger extends AbstractLogger { /** @var MemoryLogHandler $handler */ private $handler; /** @var Logger $logger */ private $logger; /** * MemoryLogger constructor. * * @param ContextHelper $contextHelper */ public function __construct(ContextHelper $contextHelper) { $this->handler = new MemoryLogHandler('debug'); $this->logger = new Logger($contextHelper); $this->logger->pushHandler($this->handler); } /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context * * @return void */ public function log($level, $message, array $context = []): void { $this->logger->log($level, $message, $context); } /** * @return array */ public function getMessages(): array { return $this->handler->getMessages(); } /** * @return array */ public function getContexts(): array { $contextArray = []; foreach ($this->handler->getContexts() as $context) { $contextArray[] = $context->getDump(); } return $contextArray; } }