Passed
Pull Request — master (#99)
by Wilmer
14:41
created

LoggerProvider   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 1
eloc 16
c 2
b 0
f 0
dl 0
loc 29
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A register() 0 27 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Provider;
6
7
use Psr\Container\ContainerInterface;
8
use Psr\Log\LoggerInterface;
9
use Psr\Log\LogLevel;
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 () {
23
            return new FileRotator(10);
24
        });
25
26
        $container->set(FileTarget::class, static function (ContainerInterface $container) {
27
            $fileTarget = new FileTarget(
28
                $container->get(Aliases::class)->get('@runtime/logs/app.log'),
29
                $container->get(FileRotatorInterface::class)
30
            );
31
32
            $fileTarget->setLevels(
33
                [
34
                    LogLevel::EMERGENCY,
35
                    LogLevel::ERROR,
36
                    LogLevel::WARNING,
37
                    LogLevel::INFO,
38
                    LogLevel::DEBUG,
39
                ]
40
            );
41
42
            return $fileTarget;
43
        });
44
45
        $container->set(LoggerInterface::class, static function (ContainerInterface $container) {
46
            return new Logger(['file' => $container->get(FileTarget::class)]);
47
        });
48
    }
49
}
50