Completed
Push — master ( 5b8ec3...c5fba5 )
by Markus
14s queued 10s
created

LogServiceProvider::createRotatingFileHandler()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

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