Passed
Push — master ( 4bcbb8...854c8f )
by Juuso
06:06 queued 11s
created

Yii2LogMessage::setMessage()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 0
cts 0
cp 0
rs 9.2
c 0
b 0
f 0
cc 4
eloc 7
nc 3
nop 1
crap 20
1
<?php
2
3
declare(strict_types=1);
4
5
namespace leinonen\Yii2Monolog;
6
7
use yii\log\Logger;
8
use Psr\Log\LogLevel;
9
use yii\helpers\VarDumper;
10
11
class Yii2LogMessage
12
{
13
    /**
14
     * @var string
15
     */
16
    private $category;
17
18
    /**
19
     * @var array
20
     */
21
    private $trace;
22
23
    /**
24
     * @var int
25
     */
26
    private $memory;
27
28
    /**
29
     * @var string
30
     */
31
    private $message;
32
33
    /**
34
     * @var int
35
     */
36
    private $timestamp;
37
38
    /**
39
     * @var int|mixed
40
     */
41
    private $yiiLogLevel;
42
43
    /**
44
     * Initializes a new Yii2LogMessage.
45
     *
46
     * @param array $message
47 10
     */
48
    public function __construct(array $message)
49 10
    {
50 10
        $this->setMessage($message[0]);
51
        $this->yiiLogLevel = $message[1];
52 10
53 10
        if (isset($message[2])) {
54
            $this->category = $message[2];
55
        }
56 10
57
        $this->timestamp = $message[3];
58 10
59 9
        if (isset($message[4])) {
60
            $this->trace = $message[4];
61
        }
62 10
63 10
        if (isset($message[5])) {
64
            $this->memory = $message[5];
65 10
        }
66
    }
67
68
    /**
69
     * Returns the message string.
70
     *
71
     * @return string
72 3
     */
73
    public function getMessage()
74 3
    {
75
        return $this->message;
76
    }
77
78
    /**
79
     * Returns the timestamp for the Yii2LogMessage.
80
     *
81
     * @return int
82 1
     */
83
    public function getTimestamp()
84 1
    {
85
        return $this->timestamp;
86
    }
87
88
    /**
89
     * Returns the context for the Yii2LogMessage.
90
     *
91
     * @return array
92 3
     */
93
    public function getContext(): array
94 3
    {
95
        $context = [];
96 3
97 3
        if ($this->category !== null) {
98
            $context['category'] = $this->category;
99
        }
100 3
101 2
        if ($this->trace !== null) {
102
            $context['trace'] = $this->trace;
103
        }
104 3
105 3
        if ($this->memory !== null) {
106
            $context['memory'] = $this->memory;
107
        }
108 3
109
        return $context;
110
    }
111
112
    /**
113
     * Returns the PSR-3 compliant log level.
114
     *
115
     * @return string
116 9
     */
117
    public function getPsr3LogLevel(): string
118
    {
119 9
        $psrLevels = [
120
            Logger::LEVEL_ERROR => LogLevel::ERROR,
121
            Logger::LEVEL_WARNING => LogLevel::WARNING,
122
            Logger::LEVEL_INFO => LogLevel::INFO,
123
            Logger::LEVEL_TRACE => LogLevel::DEBUG,
124
            Logger::LEVEL_PROFILE => LogLevel::DEBUG,
125
            Logger::LEVEL_PROFILE_BEGIN => LogLevel::DEBUG,
126
            Logger::LEVEL_PROFILE_END => LogLevel::DEBUG,
127
        ];
128 9
129
        return $psrLevels[$this->yiiLogLevel];
130
    }
131
132
    private function setMessage($message)
133
    {
134
        if (! is_string($message)) {
135
            if ($message instanceof \Throwable || $message instanceof \Exception) {
136
                $message = (string) $message;
137
            } else {
138
                $message = VarDumper::export($message);
139
            }
140
        }
141
        $this->message = $message;
142
    }
143
}
144