Symfony生产模式错误报告和P​​OST值

时间:2018-11-21 09:20:15

标签: php symfony error-handling production

我正在使用Symfony 4,但我希望2和3都差不多。

迅速的独白处理程序产生的生产模式错误报告返回GET请求的完整请求URL,因此在开发中重现错误相当容易。

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

我对错误处理和日志记录组件有所了解,但没有立即发现的东西。

还有其他人遇到此问题并找到解决方法吗?

2 个答案:

答案 0 :(得分:1)

基于@Puya Sarmidani的评论...这是我最后所做的:

config / services.yaml:

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

src / Services / MonologExtraProcessor.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);
    }
}

答案 1 :(得分:0)

是的,我对此类难以跟踪的问题使用了修复程序。 您可以在config_prod.yml /config/packages/prod/monolog.yaml 中为symfony 4启用monolog swift处理程序。这样,当您遇到以下情况时,您将收到与开发人员模式相同的电子邮件:发生错误。 (取决于action_level)。

请参见下面的代码,获取symfony 4 (您首先需要安装monolog)

    monolog:
      handlers:
        main:
          type:         fingers_crossed
          # 500 errors are logged at the critical level
          action_level: critical
          # to also log 400 level errors (but not 404's):
          # action_level: error
          # excluded_404s:
          #     - ^/
          handler:      deduplicated
        deduplicated:
          type:    deduplication
          handler: swift
        swift:
          type:       swift_mailer
          from_email: '**FROM EMAIL**'
          to_email:   '**TO EMAIL**'
          # or list of recipients
          # to_email:   ['dev1@example.com', 'dev2@example.com', ...]
          subject:    'An Error Occurred! %%message%%'
          level:      debug
          formatter:  monolog.formatter.html
          content_type: text/html