فهرست منبع

[MonologBridge] Fixed the WebProcessor

The WebProcessor can now be registered as a kernel.request listener to
get the request instead of passing it as a constructor argument, which
was broken as the request is not yet available when the logger is
instantiated.
Christophe Coevoet 13 سال پیش
والد
کامیت
689a40db16
1فایلهای تغییر یافته به همراه12 افزوده شده و 2 حذف شده
  1. 12 2
      src/Symfony/Bridge/Monolog/Processor/WebProcessor.php

+ 12 - 2
src/Symfony/Bridge/Monolog/Processor/WebProcessor.php

@@ -13,6 +13,8 @@ namespace Symfony\Bridge\Monolog\Processor;
 
 use Monolog\Processor\WebProcessor as BaseWebProcessor;
 use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
 
 /**
  * WebProcessor override to read from the HttpFoundation's Request
@@ -21,8 +23,16 @@ use Symfony\Component\HttpFoundation\Request;
  */
 class WebProcessor extends BaseWebProcessor
 {
-    public function __construct(Request $request)
+    public function __construct()
     {
-        parent::__construct($request->server->all());
+        // Pass an empty array as the default null value would access $_SERVER
+        parent::__construct(array());
+    }
+
+    public function onKernelRequest(GetResponseEvent $event)
+    {
+        if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
+            $this->serverData = $event->getRequest()->server->all();
+        }
     }
 }