Доступ к регистратору в ExceptionListener в Symfony 4 - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь зарегистрировать некоторую информацию с помощью службы ведения журнала в классе ExceptionListener, но я не понимаю, как получить доступ / создать объект средства ведения журнала ...

Вот мой кусок кода:

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 (автоподключение?), Но безуспешно.

Должен ли я иметь какую-то дополнительную конфигурацию в файле service.yaml?

App\EventListener\ExceptionListener:
    tags:
        - { name: kernel.event_listener, event: kernel.exception }

1 Ответ

0 голосов
/ 25 апреля 2018

Автоматическая проводка по умолчанию на SF4, вы должны иметь возможность вставить LoggerInterface в ваш слушатель без дальнейшей настройки, например, так (затем при необходимости вызовите $ this-> logger):

use Psr\Log\LoggerInterface;
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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...