Log request and response using Event Listener in Symfony2

I am trying to record a request and response with an event listener in Symfony2.

I registered the following service:

class LoggerListener
{

    /**
     * @var \Doctrine\ODM\MongoDB\DocumentManager
     */
    private $documentManager;

    public function __construct(DocumentManager $documentManager)
    {

        $this->documentManager = $documentManager;
    }

    public function onKernelResponse(FilterControllerEvent $event)
    {
        $controller = $event->getController();

        if ( ! is_array($controller)) {
            return;
        }

        if ( ! $controller instanceof BaseAPIController) {
            return;
        }


        $log = new ServerRequestsLog();
        $log->setRequest($request);
        $log->setRequest($response);


    }
} 

with this configuration:

  example.response_listener:
      class: Example\ServerBundle\EventListener\LoggerListener
      arguments: ["@doctrine.odm.mongodb.document_manager"]
      tags:
          - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }

How can I get the request and response in this action? I think I can get a request if I enter a request. but what about the answer?

+4
source share
1 answer

As you can read here , <event t20>, transferred to your listener FilterResponseEvent. This object has both methods getRequestand getResponse. Therefore, your code should look like this:

public function onKernelResponse(FilterResponseEvent $event)
{
    $request = $event->getRequest();
    $response = $event->getResponse();

    $log = new ServerRequestsLog();
    $log->setRequest($request);
    $log->setRequest($response);
    //....Save it with document manager, etc.
}
+6
source

Source: https://habr.com/ru/post/1569205/


All Articles