Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony生产模式错误报告和POST值_Php_Symfony_Error Handling_Production - Fatal编程技术网

Php Symfony生产模式错误报告和POST值

Php Symfony生产模式错误报告和POST值,php,symfony,error-handling,production,Php,Symfony,Error Handling,Production,我使用的是symfony4,但我希望2和3也一样 来自swift monolog处理程序的生产模式错误报告返回GET请求的完整请求URL,因此在开发中重现错误相当容易 但是,如果是POST请求,那么您会遇到麻烦,因为没有提供POST值 我对错误处理和日志组件进行了深入研究,但没有什么是显而易见的 有没有其他人遇到过这个问题并找到了解决方法?是的,我使用一个解决方法来解决这种难以追踪的问题。 您可以在symfony 4的config_prod.yml或/config/packages/prod/m

我使用的是symfony4,但我希望2和3也一样

来自swift monolog处理程序的生产模式错误报告返回GET请求的完整请求URL,因此在开发中重现错误相当容易

但是,如果是POST请求,那么您会遇到麻烦,因为没有提供POST值

我对错误处理和日志组件进行了深入研究,但没有什么是显而易见的


有没有其他人遇到过这个问题并找到了解决方法?

是的,我使用一个解决方法来解决这种难以追踪的问题。 您可以在symfony 4的
config_prod.yml
或/config/packages/prod/monolog.yaml中启用monolog swift处理程序。这样,当出现错误时,您将收到与在开发模式下相同的电子邮件。(取决于行动级别)

请参阅下面symfony4的代码(您首先需要安装monolog)

根据…的评论。。。这就是我最后所做的:

config/services.yaml:

App\Services\MonologExtraProcessor:
    tags:
        - { name: monolog.processor }
        - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
src/Services/monogextraprocessor.php:

namespace App\Services;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class MonologExtraProcessor
{
    private $postParams = null;

    public function __invoke(array $record)
    {
        if ($this->postParams !== null) {
            $record['extra']['postParams'] = $this->postParams;
        }
        return $record;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        $postParams = $event->getRequest()->request->all();
        $this->postParams = empty($postParams) ? null : serialize($postParams);
    }
}

这正是我们使用的配置。也许我没有把我的问题说清楚。。。问题是Swift处理程序的错误报告中没有包含POST数据。啊,我明白了,也许这篇文章会帮助你。我知道它是为symfony2设计的,但稍加修改,我也可以用于symfony4。
namespace App\Services;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class MonologExtraProcessor
{
    private $postParams = null;

    public function __invoke(array $record)
    {
        if ($this->postParams !== null) {
            $record['extra']['postParams'] = $this->postParams;
        }
        return $record;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        $postParams = $event->getRequest()->request->all();
        $this->postParams = empty($postParams) ? null : serialize($postParams);
    }
}