Passed
Push — master ( 1448ca...20eafa )
by Adrien
07:45
created

LoggerFactory::__invoke()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2.7938

Importance

Changes 0
Metric Value
cc 2
eloc 11
nc 2
nop 3
dl 0
loc 18
ccs 5
cts 12
cp 0.4167
crap 2.7938
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Application\Log;
6
7
use Application\Model\Log;
8
use Doctrine\ORM\EntityManager;
9
use Interop\Container\ContainerInterface;
10
use Zend\Log\Logger;
11
use Zend\Log\Writer\Stream;
12
use Zend\ServiceManager\Factory\FactoryInterface;
13
14
class LoggerFactory implements FactoryInterface
15
{
16
    /**
17
     * @var Logger
18
     */
19
    private $logger;
20
21
    /**
22
     * @param ContainerInterface $container
23
     * @param string $requestedName
24
     * @param null|array $options
25
     *
26
     * @return Logger
27
     */
28 2
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
29
    {
30 2
        if (!$this->logger) {
31
            // Log to file
32 1
            $this->logger = new Logger();
33 1
            $fileWriter = new Stream('logs/all.log');
34
            $this->logger->addWriter($fileWriter);
35
36
            $logRepository = $container->get(EntityManager::class)->getRepository(Log::class);
37
            $config = $container->get('config');
38
            $baseUrl = 'https://' . $config['hostname'];
39
40
            $dbWriter = new DbWriter($logRepository, $baseUrl);
41
            $dbWriter->addFilter(Logger::INFO);
42
            $this->logger->addWriter($dbWriter);
43
        }
44
45 1
        return $this->logger;
46
    }
47
}
48