Failed Conditions
Push — feature/extension ( 6608eb...80a1d3 )
by Yo
02:13
created

LoggerSubExtension::load()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 46
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 36
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 46
ccs 36
cts 36
cp 1
rs 8.9411
c 0
b 0
f 0
cc 1
eloc 32
nc 1
nop 2
crap 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 2
    public function getConfigKey()
17
    {
18 2
        return 'logger';
19
    }
20
21
    /**
22
     * @inheritDoc
23
     */
24
    public function configure(ArrayNodeDefinition $builder)
25
    {
26
        $builder
27
            ->addDefaultsIfNotSet()
28
            ->children()
29
                ->scalarNode('path')
30
                    ->defaultValue('var/log/behat.log')
31
                ->end()
32
                ->scalarNode('level')
33
                    ->beforeNormalization()
34
                    ->always()
35
                    ->then(function ($value) {
36
                        return Logger::toMonologLevel($value);
37
                    })
38
                    ->end()
39
                    ->defaultValue(Logger::DEBUG)
40
                ->end()
41
            ->end()
42
        ->end();
43
    }
44
45
    /**
46
     * {@inheritdoc}
47
     */
48 1
    public function load(ContainerBuilder $container, array $config)
49
    {
50 1
        $loggerConfig = $config[$this->getConfigKey()];
51 1
        $baseHandlerServiceId = 'logger.handler';
52
        // Handler
53 1
        $this->createService(
54 1
            $container,
55 1
            $baseHandlerServiceId,
56 1
            StreamHandler::class,
57
            array(
58 1
                sprintf(
59 1
                    '%s/%s',
60 1
                    '%behat.paths.base%',
61 1
                    $loggerConfig['path']
62 1
                ),
63 1
                $loggerConfig['level'],
64
            )
65 1
        );
66
        // Logger
67 1
        $this->createService(
68 1
            $container,
69 1
            'logger',
70 1
            Logger::class,
71
            array(
72 1
                'behat3Symfony',
73 1
                $loggerConfig['level'],
74 1
            ),
75 1
            array('event_dispatcher.subscriber'),
76
            array(
77
                array(
78 1
                    'pushHandler',
79 1
                    array(new Reference($this->getContainerParamOrServiceId($baseHandlerServiceId)))
80 1
                )
81 1
            )
82 1
        );
83
        // SfKernelEventLogger
84 1
        $this->createService(
85 1
            $container,
86 1
            'logger.sf_kernel_logger',
87 1
            SfKernelEventLogger::class,
88
            array(
89 1
                new Reference($this->getContainerParamOrServiceId('kernel'))
90 1
            ),
91 1
            array('event_dispatcher.subscriber')
92 1
        );
93 1
    }
94
}
95