/
var
/
www
/
html
/
restaurants
/
vendor
/
symfony
/
monolog-bridge
/
Processor
/
Upload File
HOME
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bridge\Monolog\Processor; use Monolog\Logger; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; use Symfony\Contracts\Service\ResetInterface; class DebugProcessor implements DebugLoggerInterface, ResetInterface { private $records = []; private $errorCount = []; private $requestStack; public function __construct(RequestStack $requestStack = null) { $this->requestStack = $requestStack; } public function __invoke(array $record) { $hash = $this->requestStack && ($request = $this->requestStack->getCurrentRequest()) ? spl_object_hash($request) : ''; $this->records[$hash][] = [ 'timestamp' => $record['datetime'] instanceof \DateTimeInterface ? $record['datetime']->getTimestamp() : strtotime($record['datetime']), 'message' => $record['message'], 'priority' => $record['level'], 'priorityName' => $record['level_name'], 'context' => $record['context'], 'channel' => $record['channel'] ?? '', ]; if (!isset($this->errorCount[$hash])) { $this->errorCount[$hash] = 0; } switch ($record['level']) { case Logger::ERROR: case Logger::CRITICAL: case Logger::ALERT: case Logger::EMERGENCY: ++$this->errorCount[$hash]; } return $record; } /** * {@inheritdoc} * * @param Request|null $request */ public function getLogs(/* Request $request = null */) { if (\func_num_args() < 1 && __CLASS__ !== static::class && __CLASS__ !== (new \ReflectionMethod($this, __FUNCTION__))->getDeclaringClass()->getName() && !$this instanceof \PHPUnit\Framework\MockObject\MockObject && !$this instanceof \Prophecy\Prophecy\ProphecySubjectInterface && !$this instanceof \Mockery\MockInterface) { @trigger_error(sprintf('The "%s()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); } if (1 <= \func_num_args() && null !== $request = func_get_arg(0)) { return $this->records[spl_object_hash($request)] ?? []; } if (0 === \count($this->records)) { return []; } return array_merge(...array_values($this->records)); } /** * {@inheritdoc} * * @param Request|null $request */ public function countErrors(/* Request $request = null */) { if (\func_num_args() < 1 && __CLASS__ !== static::class && __CLASS__ !== (new \ReflectionMethod($this, __FUNCTION__))->getDeclaringClass()->getName() && !$this instanceof \PHPUnit\Framework\MockObject\MockObject && !$this instanceof \Prophecy\Prophecy\ProphecySubjectInterface && !$this instanceof \Mockery\MockInterface) { @trigger_error(sprintf('The "%s()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED); } if (1 <= \func_num_args() && null !== $request = func_get_arg(0)) { return $this->errorCount[spl_object_hash($request)] ?? 0; } return array_sum($this->errorCount); } /** * {@inheritdoc} */ public function clear() { $this->records = []; $this->errorCount = []; } /** * {@inheritdoc} */ public function reset() { $this->clear(); } }