Failed Conditions
Push — feature/improve ( 14cb7b )
by Yo
06:33
created

LoggerSubExtension   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 99
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 63.33%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 6
dl 0
loc 99
ccs 38
cts 60
cp 0.6333
rs 10
c 0
b 0
f 0

5 Methods

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