Completed
Push — master ( 2ef37c...52cad6 )
by Oleg
02:13
created

AppLoggerFactory::__invoke()   D

Complexity

Conditions 9
Paths 12

Size

Total Lines 28
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 9

Importance

Changes 0
Metric Value
cc 9
eloc 16
nc 12
nop 1
dl 0
loc 28
ccs 16
cts 16
cp 1
crap 9
rs 4.909
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace SlayerBirden\DataFlowServer\Logger;
5
6
use Monolog\Handler\HandlerInterface;
7
use Monolog\Handler\StreamHandler;
8
use Monolog\Logger;
9
use Psr\Container\ContainerInterface;
10
11
class AppLoggerFactory
12
{
13
    /**
14
     * @param ContainerInterface $container
15
     * @return Logger
16
     * @throws \Psr\Container\ContainerExceptionInterface
17
     * @throws \Psr\Container\NotFoundExceptionInterface
18
     * @throws \Exception
19
     */
20 33
    public function __invoke(ContainerInterface $container)
21
    {
22 33
        $config = $container->has('config') ? $container->get('config') : [];
23 33
        $loggerConfig = $config['logger'] ?? [];
24 33
        $handlersAdded = false;
25
26 33
        $logger = new Logger('app');
27
28 33
        if (!empty($loggerConfig)) {
29 33
            $handlers = $loggerConfig['handlers'] ?? [];
30 33
            if (!empty($handlers) && is_array($handlers)) {
31 1
                foreach ($handlers as $handler) {
32 1
                    if (is_object($handler) && $handler instanceof HandlerInterface) {
33 1
                        $logger->pushHandler($handler);
34 1
                        $handlersAdded = true;
35
                    }
36
                }
37
            }
38
        }
39
40 33
        if (!$handlersAdded) {
41
            // add default handler
42 32
            $baseHandler = new StreamHandler('data/log/app.log');
43 32
            $logger->pushHandler($baseHandler);
44
        }
45
46 33
        return $logger;
47
    }
48
}
49