<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\TerminateEvent;
class LogApiRequestsSubscriber implements EventSubscriberInterface
{
public function onKernelTerminate(TerminateEvent $event)
{
$request = $event->getRequest();
$uri = $request->getRequestUri();
if (0 === strncmp($uri, '/api/', 5)) {
$log = '>>>> Requête '.date('Y/m/d H:i:s').' from '.$request->getClientIp().' : ';
$log .= $request->getMethod().' '.$uri."\n";
$content = $request->getContent();
if ('' !== $content) {
$log .= $content;
$log .= "\n";
}
$log .= "\n";
$response = $event->getResponse();
$log .= '<<<< Réponse '.date('Y/m/d H:i:s')." :\n";
//$log[] = $response->headers->__toString();
$content = $response->getContent();
if ('' !== $content) {
$log .= $content;
$log .= "\n";
}
$log .= "\n--------------------------------------------------------------------------------\n";
$file = dirname(dirname(__DIR__)).'/public/requests.log';
file_put_contents($file, $log, FILE_APPEND);
}
}
public static function getSubscribedEvents()
{
return [
'kernel.terminate' => 'onKernelTerminate',
];
}
}