Passed
Push — feature/extension ( 80a1d3...dba08b )
by Yo
02:20
created

LoggerSubExtension   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 98.21%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 6
dl 0
loc 84
ccs 55
cts 56
cp 0.9821
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getConfigKey() 0 4 1
B load() 0 46 1
A configure() 0 20 1
1
<?php
2
namespace Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension;
3
4
use Monolog\Handler\StreamHandler;
5
use Monolog\Logger;
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Reference;
9
use Yoanm\Behat3SymfonyExtension\Logger\SfKernelEventLogger;
10
11
class LoggerSubExtension extends AbstractSubExtension
12
{
13
    /**
14
     * @inheritDoc
15
     */
16 4
    public function getConfigKey()
17
    {
18 4
        return 'logger';
19
    }
20
21
    /**
22
     * @inheritDoc
23
     */
24 1
    public function configure(ArrayNodeDefinition $builder)
25
    {
26
        $builder
27 1
            ->addDefaultsIfNotSet()
28 1
            ->children()
29 1
                ->scalarNode('path')
30 1
                    ->defaultValue('var/log/behat.log')
31 1
                ->end()
32 1
                ->scalarNode('level')
33 1
                    ->beforeNormalization()
34 1
                    ->always()
35 1
                    ->then(function ($value) {
36
                        return Logger::toMonologLevel($value);
37 1
                    })
38 1
                    ->end()
39 1
                    ->defaultValue(Logger::DEBUG)
40 1
                ->end()
41 1
            ->end()
42 1
        ->end();
43 1
    }
44
45
    /**
46
     * {@inheritdoc}
47
     */
48 2
    public function load(ContainerBuilder $container, array $config)
49
    {
50 2
        $loggerConfig = $config[$this->getConfigKey()];
51 2
        $baseHandlerServiceId = 'logger.handler';
52
        // Handler
53 2
        $this->createService(
54 2
            $container,
55 2
            $baseHandlerServiceId,
56 2
            StreamHandler::class,
57
            array(
58 2
                sprintf(
59 2
                    '%s/%s',
60 2
                    '%behat.paths.base%',
61 2
                    $loggerConfig['path']
62 2
                ),
63 2
                $loggerConfig['level'],
64
            )
65 2
        );
66
        // Logger
67 2
        $this->createService(
68 2
            $container,
69 2
            'logger',
70 2
            Logger::class,
71
            array(
72 2
                'behat3Symfony',
73 2
                $loggerConfig['level'],
74 2
            ),
75 2
            array('event_dispatcher.subscriber'),
76
            array(
77
                array(
78 2
                    'pushHandler',
79 2
                    array(new Reference($this->getContainerParamOrServiceId($baseHandlerServiceId)))
80 2
                )
81 2
            )
82 2
        );
83
        // SfKernelEventLogger
84 2
        $this->createService(
85 2
            $container,
86 2
            'logger.sf_kernel_logger',
87 2
            SfKernelEventLogger::class,
88
            array(
89 2
                new Reference($this->getContainerParamOrServiceId('kernel'))
90 2
            ),
91 2
            array('event_dispatcher.subscriber')
92 2
        );
93 2
    }
94
}
95