API Platform Logging Headers from requests API Platform Logging Headers from requests symfony symfony

API Platform Logging Headers from requests


You can create a listener for the kernel.terminate event, that would be logging request and response data. Something like this.

monolog.yaml

monolog:  handlers:    request_log:      type: rotating_file      max_files: 90      level: debug      path: '%kernel.logs_dir%/request/%kernel.environment%.log'      channels: request_log

services.yaml

App\EventListener\LogRequestAndResponseEventListener:    tags:        - { 'name': 'monolog.logger', 'channel': 'request_log' }        - { 'name': 'kernel.event_listener', 'event': 'kernel.terminate', 'method': 'onKernelTerminate' }

listener

namespace App\EventListener;use Psr\Log\LoggerInterface;use Symfony\Component\HttpKernel\Event\TerminateEvent;class LogRequestAndResponseEventListener{    private $logger;    public function __construct(LoggerInterface $logger)    {        $this->logger = $logger;    }    public function onKernelTerminate(TerminateEvent $event)    {        $request = $event->getRequest();        $response = $event->getResponse();        $this->logger->info('data', [            'route' => $request->getMethod() . ' ' . $request->getRequestUri(),            'status' => $response->getStatusCode(),            'request body' => $request->request->all(),            'response' => json_decode($response->getContent(), true),            'headers' => $request->headers->all(),        ]);    }}