Php Symfony生产模式错误报告和POST值
我使用的是symfony4,但我希望2和3也一样 来自swift monolog处理程序的生产模式错误报告返回GET请求的完整请求URL,因此在开发中重现错误相当容易 但是,如果是POST请求,那么您会遇到麻烦,因为没有提供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
有没有其他人遇到过这个问题并找到了解决方法?是的,我使用一个解决方法来解决这种难以追踪的问题。 您可以在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);
}
}