Отчеты об ошибках производственного режима Symfony и значения POST - PullRequest
0 голосов
/ 21 ноября 2018

Я использую Symfony 4, но я ожидаю, что это примерно то же самое для 2 и 3.

Отчеты об ошибках рабочего режима от обработчика swift monolog возвращают полный URL-адрес запроса для запросов GET, так что это довольнолегко воспроизвести ошибку в процессе разработки.

Но, если это запрос POST, у вас возникли проблемы, так как значения POST не предоставлены.

Я обошел эту ошибкуобработка и регистрация компонентов, но ничего не очевидно сразу.

Кто-нибудь еще сталкивался с этой проблемой и нашел ее решение?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

На основании комментария от @ 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);
    }
}
0 голосов
/ 21 ноября 2018

Да, я использую исправление для такого рода проблем, которые трудно отследить.Вы можете включить обработчик монолога swift в config_prod.yml или / config / packages / prod / monolog.yaml для symfony 4. Таким образом, вы получите электронное письмо, такое же, как в режиме dev, когда возникнет ошибка,(зависит от уровня_ действия).

См. приведенный ниже код для symfony 4 (сначала необходимо установить монолог)

    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
...