* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bridge\Monolog; use Monolog\Logger as BaseLogger; use Monolog\ResettableInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; use Symfony\Contracts\Service\ResetInterface; /** * @author Fabien Potencier */ class Logger extends BaseLogger implements DebugLoggerInterface, ResetInterface { /** * {@inheritdoc} */ public function getLogs(Request $request = null) { if ($logger = $this->getDebugLogger()) { return $logger->getLogs($request); } return []; } /** * {@inheritdoc} */ public function countErrors(Request $request = null) { if ($logger = $this->getDebugLogger()) { return $logger->countErrors($request); } return 0; } /** * {@inheritdoc} */ public function clear() { if ($logger = $this->getDebugLogger()) { $logger->clear(); } } /** * {@inheritdoc} */ public function reset(): void { $this->clear(); if ($this instanceof ResettableInterface) { parent::reset(); } } public function removeDebugLogger() { foreach ($this->processors as $k => $processor) { if ($processor instanceof DebugLoggerInterface) { unset($this->processors[$k]); } } foreach ($this->handlers as $k => $handler) { if ($handler instanceof DebugLoggerInterface) { unset($this->handlers[$k]); } } } /** * Returns a DebugLoggerInterface instance if one is registered with this logger. */ private function getDebugLogger(): ?DebugLoggerInterface { foreach ($this->processors as $processor) { if ($processor instanceof DebugLoggerInterface) { return $processor; } } foreach ($this->handlers as $handler) { if ($handler instanceof DebugLoggerInterface) { return $handler; } } return null; } }