Completed
Push — master ( eae939...155019 )
by Yo
02:20
created

SfKernelEventLogger::log()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 8
cts 8
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
nc 1
nop 3
crap 1
1
<?php
2
namespace Yoanm\Behat3SymfonyExtension\Logger;
3
4
use Psr\Log\LoggerInterface;
5
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
6
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
7
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
8
use Symfony\Component\HttpKernel\HttpKernelInterface;
9
use Symfony\Component\HttpKernel\KernelEvents;
10
11
/**
12
 * This class will log on :
13
 * - kernel.request event => log that a request has been handled
14
 * - kernel.exception event => log that an exception has been thrown
15
 *
16
 * It's really usefull to understand what happens behind the scene when a behat step is executed
17
 */
18
class SfKernelEventLogger implements EventSubscriberInterface
19
{
20
    /** @var LoggerInterface */
21
    private $logger;
22
23
    /**
24
     * @param LoggerInterface $logger
25
     * @throws \Exception
26
     */
27 4
    public function __construct(LoggerInterface $logger)
28
    {
29 4
        $this->logger = $logger;
30 4
    }
31
32
    /**
33
     * @return array
34
     */
35 1
    public static function getSubscribedEvents()
36
    {
37
        return [
38 1
            KernelEvents::REQUEST => 'onKernelRequest',
39 1
            KernelEvents::EXCEPTION => 'onKernelException',
40 1
        ];
41
    }
42
43
    /**
44
     * @param GetResponseEvent $event
45
     */
46 2
    public function onKernelRequest(GetResponseEvent $event)
47
    {
48 2
        $this->logger->info(
49 2
            '[REQUEST]',
50
            [
51 2
                'type' => ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST
52 2
                    ? 'Master'
53 1
                    : 'Sub'
54 2
                ),
55 2
                'method' => $event->getRequest()->getMethod(),
56 2
                'uri' => $event->getRequest()->getUri(),
57
            ]
58 2
        );
59 2
    }
60
61
    /**
62
     * @param GetResponseForExceptionEvent $event
63
     */
64 1
    public function onKernelException(GetResponseForExceptionEvent $event)
65
    {
66 1
        $this->logger->error(
67 1
            '[EXCEPTION_THROWN]',
68
            [
69 1
                'message' => $event->getException()->getMessage(),
70
            ]
71 1
        );
72 1
    }
73
}
74