Passed
Pull Request — master (#99)
by Wilmer
12:59
created

LoggerProvider   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
eloc 16
c 1
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\LogLevel;
9
use Yiisoft\Aliases\Aliases;
10
use Yiisoft\Di\Container;
11
use Yiisoft\Di\Support\ServiceProvider;
12
use Yiisoft\Log\Logger;
13
use Yiisoft\Log\Target\File\FileRotator;
14
use Yiisoft\Log\Target\File\FileRotatorInterface;
15
use Yiisoft\Log\Target\File\FileTarget;
16
17
final class LoggerProvider extends ServiceProvider
18
{
19
    public function register(Container $container): void
20
    {
21
        $container->set(FileRotatorInterface::class, static function () {
22
            return new FileRotator(10);
23
        });
24
25
        $container->set(FileTarget::class, static function (ContainerInterface $container) {
26
            $fileTarget = new FileTarget(
27
                $container->get(Aliases::class)->get('@runtime/logs/app.log'),
28
                $container->get(FileRotatorInterface::class)
29
            );
30
31
            $fileTarget->setLevels(
32
                [
33
                    LogLevel::EMERGENCY,
34
                    LogLevel::ERROR,
35
                    LogLevel::WARNING,
36
                    LogLevel::INFO,
37
                    LogLevel::DEBUG,
38
                ]
39
            );
40
41
            return $fileTarget;
42
        });
43
44
        $container->set(Logger::class, static function (ContainerInterface $container) {
45
            return new Logger(['file' => $container->get(FileTarget::class)]);
46
        });
47
    }
48
}
49