【问题标题】:Log request and response with Event Listener in Symfony2在 Symfony2 中使用事件监听器记录请求和响应
【发布时间】:2014-12-28 14:18:28
【问题描述】:

我正在尝试使用 Symfony2 中的事件侦听器记录请求和响应。

我已经注册了以下服务:

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);


    }
} 

使用此配置:

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

如何在此操作中获取请求和响应?如果我将注入请求服务,我想我可以获得请求。但是反应呢?

【问题讨论】:

    标签: symfony event-listener


    【解决方案1】:

    正如你可以read herekernel.response 事件对象,传递给你的监听器是FilterResponseEvent。该对象同时具有getRequestgetResponse 方法。所以你的代码应该是这样的:

    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.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多