在Symfony 4中的异常Listener中访问记录仪



我正在尝试在exceptionListener类中使用Logger服务记录一些信息,但我不明白如何访问/创建logger对象...

这是我的代码:

class ExceptionListener
{
    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        ...
        $exception = $event->getException();
        if ($exception instanceof HttpExceptionInterface) {
            // HTTP Exception (400, 401, 404, ...)
            $response = new JsonResponse(...)
        }
        ...
        $event->setResponse($response);
    }
}

侦听器效法完美,但在这种情况下,默认情况下什么都没有记录到dev.log文件中(当然是启用了记录并且功能功能(。

我尝试使用LoggerInterface参数到onKernelException函数(AutoWiring?(,但没有成功。

我应该在service.yaml文件中还要其他配置吗?

AppEventListenerExceptionListener:
    tags:
        - { name: kernel.event_listener, event: kernel.exception }

默认情况下在SF4上自动启动,您应该能够在不进一步配置的情况下将loggerinterface注入侦听器中(然后在需要时调用$ this-> logger(:

use PsrLogLoggerInterface;
class ExceptionListener
{
    protected $logger;
    public function __construct(LoggerInterface $logger) {
        $this->logger = $logger;
    }
    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        ...
        $exception = $event->getException();
        if ($exception instanceof HttpExceptionInterface) {
            // HTTP Exception (400, 401, 404, ...)
            $response = new JsonResponse(...)
        }
        ...
        $event->setResponse($response);
    }
}

最新更新