WebProcessor.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Bridge\Monolog\Processor;
  11. use Monolog\Processor\WebProcessor as BaseWebProcessor;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpKernel\Event\RequestEvent;
  14. use Symfony\Component\HttpKernel\KernelEvents;
  15. /**
  16. * WebProcessor override to read from the HttpFoundation's Request.
  17. *
  18. * @author Jordi Boggiano <j.boggiano@seld.be>
  19. *
  20. * @final
  21. */
  22. class WebProcessor extends BaseWebProcessor implements EventSubscriberInterface
  23. {
  24. public function __construct(array $extraFields = null)
  25. {
  26. // Pass an empty array as the default null value would access $_SERVER
  27. parent::__construct([], $extraFields);
  28. }
  29. public function onKernelRequest(RequestEvent $event)
  30. {
  31. if ($event->isMasterRequest()) {
  32. $this->serverData = $event->getRequest()->server->all();
  33. $this->serverData['REMOTE_ADDR'] = $event->getRequest()->getClientIp();
  34. }
  35. }
  36. public static function getSubscribedEvents(): array
  37. {
  38. return [
  39. KernelEvents::REQUEST => ['onKernelRequest', 4096],
  40. ];
  41. }
  42. }