MonologTarget   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 2
cbo 4
dl 0
loc 68
ccs 18
cts 18
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A init() 0 6 1
A export() 0 6 1
A setChannel() 0 4 1
A getMessages() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leinonen\Yii2Monolog;
6
7
use Monolog\Logger;
8
use yii\log\Target;
9
use Illuminate\Support\Collection;
10
11
class MonologTarget extends Target
12
{
13
    /**
14
     * @var Logger
15
     */
16
    private $logger;
17
18
    /**
19
     * @var string
20
     */
21
    private $channel = null;
22
23
    /**
24
     * @var LoggerRegistry
25
     */
26
    private $loggerRegistry;
27
28
    /**
29
     * Initializes a new MonologTarget.
30
     *
31
     * @param LoggerRegistry $loggerRegistry
32
     * @param array $config
33
     */
34 3
    public function __construct(LoggerRegistry $loggerRegistry, $config = [])
35
    {
36 3
        $this->loggerRegistry = $loggerRegistry;
37 3
        parent::__construct($config);
38 3
    }
39
40
    /**
41
     * {@inheritdoc}
42
     * @throws \InvalidArgumentException
43
     * @throws \yii\base\InvalidConfigException
44
     */
45 3
    public function init()
46
    {
47 3
        $this->logger = $this->loggerRegistry->getLogger($this->channel);
48
49 3
        parent::init();
50 3
    }
51
52
    /**
53
     * {@inheritdoc}
54
     */
55
    public function export()
56
    {
57 3
        $this->getMessages()->each(function (Yii2LogMessage $message) {
58 3
            $this->logger->log($message->getPsr3LogLevel(), $message->getMessage(), $message->getContext());
59 3
        });
60 3
    }
61
62 3
    public function setChannel(string $channel)
63
    {
64 3
        $this->channel = $channel;
65 3
    }
66
67
    /**
68
     * Returns the messages from the Target wrapped in Yii2LogMessage.
69
     *
70
     * @return Yii2LogMessage[]|Collection
71
     */
72
    private function getMessages(): Collection
73
    {
74 3
        return collect($this->messages)->map(function ($message) {
75 3
            return new Yii2LogMessage($message);
76 3
        });
77
    }
78
}
79