LogServiceProvider::createStreamHandler()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 6
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jellyfish\Log;
6
7
use Monolog\Handler\AbstractProcessingHandler;
8
use Monolog\Handler\RotatingFileHandler;
9
use Monolog\Handler\StreamHandler;
10
use Monolog\Logger;
11
use Pimple\Container;
12
use Pimple\ServiceProviderInterface;
13
14
class LogServiceProvider implements ServiceProviderInterface
15
{
16
    /**
17
     * @param \Pimple\Container $container
18
     *
19
     * @return void
20
     */
21
    public function register(Container $container): void
22
    {
23
        $this->registerLogger($container);
24
    }
25
26
    /**
27
     * @param \Pimple\Container $container
28
     *
29
     * @return \Jellyfish\Log\LogServiceProvider
30
     */
31
    protected function registerLogger(Container $container): LogServiceProvider
32
    {
33
        $self = $this;
34
35
        $container->offsetSet(LogConstants::CONTAINER_KEY_LOGGER, static function (Container $container) use ($self) {
36
            $logger = new Logger('jellyfish');
37
38
            $logger->pushHandler($self->createStreamHandler($container));
39
            $logger->pushHandler($self->createRotatingFileHandler($container));
40
41
            return $logger;
42
        });
43
44
        return $this;
45
    }
46
47
    /**
48
     * @param \Pimple\Container $container
49
     *
50
     * @return \Monolog\Handler\AbstractProcessingHandler
51
     *
52
     * @throws \Exception
53
     */
54
    protected function createStreamHandler(Container $container): AbstractProcessingHandler
55
    {
56
        $logLevel = $container->offsetGet('config')
57
            ->get(LogConstants::LOG_LEVEL, (string) LogConstants::DEFAULT_LOG_LEVEL);
58
59
        return new StreamHandler('php://stdout', (int) $logLevel);
60
    }
61
62
    /**
63
     * @param \Pimple\Container $container
64
     *
65
     * @return \Monolog\Handler\AbstractProcessingHandler
66
     */
67
    protected function createRotatingFileHandler(Container $container): AbstractProcessingHandler
68
    {
69
        $logLevel = $container->offsetGet('config')
70
            ->get(LogConstants::LOG_LEVEL, (string) LogConstants::DEFAULT_LOG_LEVEL);
71
72
        $filename = $container->offsetGet('root_dir') . 'var/log/jellyfish.log';
73
74
        return new RotatingFileHandler($filename, 0, (int) $logLevel);
75
    }
76
}
77