Symfony/Monolog: 如何自定义404 not found异常的日志格式
Symfony/Monolog: how to customize the format of logs about 404 not found exceptions
Monolog 提供了一种 exclude 404 errors from the log 的方法,但是如果我想自定义它们而不是完全抑制它们怎么办?
因此显示的内容不同于:
[2016-12-12 10:41:01] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /non-existing-route"" at /myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php line 125 {"exception":"[object] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException(code: 0): No route found for \"GET /non-existing-route\" at /myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php:125, Symfony\Component\Routing\Exception\ResourceNotFoundException(code: 0): at /myproject/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php:1181)"} []
假设您谈论的是 app/logs 目录中的日志生命周期。如果是这样,我会这样做,非常简单。
创建自定义记录器和关联的日志格式化程序。示例:Creating a custom monolog logger and formatter in symfony
然后我会在自定义事件侦听器中捕获 NotFoundHttpException
异常(示例:Triggering redirect in event listener with onKernelException when 404 NotFoundHttpException occurs)并使用我在步骤 1 中创建的自定义记录器记录它。
注意:您的自定义记录器已在上面的第 1 步中注入到控制器中。在你的情况下,将它注入你的事件侦听器。
可能的解决方案是使用日志处理器。
详细文档位于How to Add extra Data to Log Messages via a Processor
然后在进程内部或检测 NotFoundHttpException
并将其替换为人类可读的消息。
Monolog 提供了一种 exclude 404 errors from the log 的方法,但是如果我想自定义它们而不是完全抑制它们怎么办?
因此显示的内容不同于:
[2016-12-12 10:41:01] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /non-existing-route"" at /myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php line 125 {"exception":"[object] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException(code: 0): No route found for \"GET /non-existing-route\" at /myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php:125, Symfony\Component\Routing\Exception\ResourceNotFoundException(code: 0): at /myproject/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php:1181)"} []
假设您谈论的是 app/logs 目录中的日志生命周期。如果是这样,我会这样做,非常简单。
创建自定义记录器和关联的日志格式化程序。示例:Creating a custom monolog logger and formatter in symfony
然后我会在自定义事件侦听器中捕获
NotFoundHttpException
异常(示例:Triggering redirect in event listener with onKernelException when 404 NotFoundHttpException occurs)并使用我在步骤 1 中创建的自定义记录器记录它。
注意:您的自定义记录器已在上面的第 1 步中注入到控制器中。在你的情况下,将它注入你的事件侦听器。
可能的解决方案是使用日志处理器。
详细文档位于How to Add extra Data to Log Messages via a Processor
然后在进程内部或检测 NotFoundHttpException
并将其替换为人类可读的消息。