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. Если это так, я бы сделал это так, что довольно просто.
Создайте собственный регистратор и связанный с ним форматировщик журналов. Пример: создание собственного монолога-регистратора и форматера в Symfony
Я бы тогда поймал
NotFoundHttpException
исключение в пользовательском прослушивателе событий (Пример: запуск перенаправления в прослушивателе событий с onKernelException при возникновении 404 NotFoundHttpException) и зарегистрируйте его с помощью своего пользовательского регистратора, созданного на шаге 1.
Примечание: ваш пользовательский регистратор вводится в контроллер в шаге 1 выше. В вашем случае вставьте его слушателю событий.