事件的setResponse($ response)停止记录

时间:2017-09-11 15:01:03

标签: symfony logging listener

我试图查看日志文件中的错误。 我有一个ExceptionListener类和一个使用标签

定义的服务
tags:
    - { name: kernel.event_listener, event: kernel.exception }

如果我使用onKernelException,请使用$event->setResponse($response);方法 将不再记录错误消息。

我试图更改响应格式。这就是我需要这样做的原因。 如果我删除setResponse(),错误被记录,但正如我所提到的,我需要另一种格式。

关于如何在调用setResponse的情况下记录日志的任何想法? 这可以在不将@logger注入我的监听器的情况下完成吗?

这是我的听众课程的样子

class ExceptionListener {

    /** 
     * @param GetResponseForExceptionEvent $event
     */
    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $e = $event->getException();

        if ($e instanceof HttpException) {
            $response = new JsonResponse();
             $data = [
                'error' => [
                    'code'    => $e->getStatusCode(),
                    'message' => $$e->getMessage()
                ]
            ];

            $response->setStatusCode($code)
                 ->setData($data);


            $event->setResponse($response);
        }

        // Let the internal listener handle the exception
        return;
    }
}

在services.yml

 app.event_listener.exception_listener:
        class: AppBundle\EventListener\ExceptionListener
        tags:
            - { name: kernel.event_listener, event: kernel.exception }

0 个答案:

没有答案