Symfony/Monolog: как настроить формат логов около 404 не найденных исключений

Monolog предлагает способ исключения 404 ошибок из журнала, но что если я захочу их настроить вместо того, чтобы полностью их подавлять?

Таким образом, показывая что-то другое, чем:

[2016-12-12 10:41:01] request.ERROR: Uncaught PHP Exception Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException: "Не найден маршрут для"GET / не-существующий-маршрут "" в /myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php строка 125 {"исключение":"[объект] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException(код: 0): не найден маршрут для \"GET /non-isting-route\"в /myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php:125, Symfony\Component\Routing\Exception\ResourceNotFoundException: код: 0: at /myproject/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php:1181)"} []

2 ответа

Решение

Возможное решение - использовать процессор журналов.

Подробная документация находится в разделе Как добавить дополнительные данные в сообщения журнала через процессор.

Затем внутри процесса или обнаружить NotFoundHttpException и замените его на удобочитаемое сообщение.

Предполагая, что вы говорите о жизни журнала в каталоге app / logs. Если это так, я бы сделал это так, что довольно просто.

  1. Создайте собственный регистратор и связанный с ним форматировщик журналов. Пример: создание собственного монолога-регистратора и форматера в Symfony

  2. Я бы тогда поймал NotFoundHttpException исключение в пользовательском прослушивателе событий (Пример: запуск перенаправления в прослушивателе событий с onKernelException при возникновении 404 NotFoundHttpException) и зарегистрируйте его с помощью своего пользовательского регистратора, созданного на шаге 1.

Примечание: ваш пользовательский регистратор вводится в контроллер в шаге 1 выше. В вашем случае вставьте его слушателю событий.

Другие вопросы по тегам