Logging   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
c 1
b 0
f 0
lcom 0
cbo 7
dl 0
loc 37
ccs 0
cts 24
cp 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B __invoke() 0 31 2
1
<?php declare(strict_types = 1);
2
3
namespace Venta\Framework\Kernel\Bootstrap;
4
5
use Monolog\Handler\StreamHandler;
6
use Monolog\Logger;
7
use Monolog\Processor\PsrLogMessageProcessor;
8
use Monolog\Processor\WebProcessor;
9
use Psr\Log\LoggerInterface;
10
use Venta\Contracts\Config\Config;
11
use Venta\Framework\Kernel\AbstractKernelBootstrap;
12
13
/**
14
 * Class Logging
15
 *
16
 * @package Venta\Framework\Kernel\Bootstrap
17
 */
18
final class Logging extends AbstractKernelBootstrap
19
{
20
    /**
21
     * @inheritDoc
22
     */
23
    public function __invoke()
24
    {
25
        // todo: implement multi-channel configuration.
26
        $this->container()->factory(
27
            LoggerInterface::class, function (Config $config) {
28
29
            $handler = new StreamHandler(
30
                $this->kernel()->rootPath() . '/storage/logs/venta.log',
31
                $config->log_level ?? Logger::DEBUG
32
            );
33
34
            $handler->pushProcessor(new PsrLogMessageProcessor);
35
36
            if (!$this->kernel()->isCli()) {
37
                $handler->pushProcessor(new WebProcessor(null, [ // todo: make list configurable?
38
                    'url' => 'REQUEST_URI',
39
                    'ip' => 'REMOTE_ADDR',
40
                    'http_method' => 'REQUEST_METHOD',
41
                    'server' => 'SERVER_NAME',
42
                    'referrer' => 'HTTP_REFERER',
43
                    'user_agent' => 'HTTP_USER_AGENT',
44
                ]));
45
            }
46
47
            $logger = new Logger('venta');
48
            $logger->pushHandler($handler);
49
50
            return $logger;
51
52
        }, true);
53
    }
54
}
55