Passed
Push — master ( d21aeb...6f7326 )
by Alexander
27:36 queued 12:36
created

LoggerProvider   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 31
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A register() 0 29 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Provider;
6
7
use App\LayoutParameters;
8
use Psr\Container\ContainerInterface;
9
use Psr\Log\LoggerInterface;
10
use Yiisoft\Aliases\Aliases;
11
use Yiisoft\Di\Container;
12
use Yiisoft\Di\Support\ServiceProvider;
13
use Yiisoft\Log\Logger;
14
use Yiisoft\Log\Target\File\FileRotator;
15
use Yiisoft\Log\Target\File\FileRotatorInterface;
16
use Yiisoft\Log\Target\File\FileTarget;
17
18
final class LoggerProvider extends ServiceProvider
19
{
20
    public function register(Container $container): void
21
    {
22
        $container->set(FileRotatorInterface::class, static function (ContainerInterface $container) {
23
            $layoutParameters = $container->get(LayoutParameters::class);
24
25
            return new FileRotator(
26
                $layoutParameters->getMaxFileSize(),
27
                $layoutParameters->getMaxFiles(),
28
                $layoutParameters->getFileMode(),
29
                $layoutParameters->getRotateByCopy()
30
            );
31
        });
32
33
        $container->set(FileTarget::class, static function (ContainerInterface $container) {
34
            $aliases = $container->get(Aliases::class);
35
            $layoutParameters = $container->get(LayoutParameters::class);
36
37
            $fileTarget = new FileTarget(
38
                $aliases->get($layoutParameters->getLoggerFile()),
39
                $container->get(FileRotatorInterface::class)
40
            );
41
42
            $fileTarget->setLevels($layoutParameters->getLoggerLevels());
43
44
            return $fileTarget;
45
        });
46
47
        $container->set(LoggerInterface::class, static function (ContainerInterface $container) {
48
            return new Logger(['file' => $container->get(FileTarget::class)]);
49
        });
50
    }
51
}
52