Log::withParameterizedMessage()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 7
c 0
b 0
f 0
ccs 4
cts 4
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
declare(strict_types=1);
3
4
namespace TechDeCo\ElasticApmAgent\Message;
5
6
use JsonSerializable;
7
use TechDeCo\ElasticApmAgent\Serialization;
8
use function array_merge;
9
10
final class Log implements JsonSerializable
11
{
12
    /**
13
     * @var string|null
14
     */
15
    private $level;
16
17
    /**
18
     * @var string|null
19
     */
20
    private $loggerName;
21
22
    /**
23
     * @var string
24
     */
25
    private $message;
26
27
    /**
28
     * @var string|null
29
     */
30
    private $parameterizedMessage;
31
32
    /**
33
     * @var StackTraceFrame[]
34
     */
35
    private $stackTraceFrameList = [];
36
37 17
    public function __construct(string $message)
38
    {
39 17
        $this->message = $message;
40 17
    }
41
42 1
    public function withSeverityLevel(string $level): self
43
    {
44 1
        $me        = clone $this;
45 1
        $me->level = $level;
46
47 1
        return $me;
48
    }
49
50 1
    public function byLoggerNamed(string $name): self
51
    {
52 1
        $me             = clone $this;
53 1
        $me->loggerName = $name;
54
55 1
        return $me;
56
    }
57
58 1
    public function withParameterizedMessage(string $message): self
59
    {
60 1
        $me                       = clone $this;
61 1
        $me->parameterizedMessage = $message;
62
63 1
        return $me;
64
    }
65
66 1
    public function withStackTraceFrame(StackTraceFrame ...$frame): self
67
    {
68 1
        $me                      = clone $this;
69 1
        $me->stackTraceFrameList = array_merge($me->stackTraceFrameList, $frame);
70
71 1
        return $me;
72
    }
73
74
    /**
75
     * @return mixed[]
76
     */
77 8
    public function jsonSerialize(): array
78
    {
79 8
        return Serialization::filterUnset([
80 8
            'level' => $this->level,
81 8
            'logger_name' => $this->loggerName,
82 8
            'message' => $this->message,
83 8
            'param_message' => $this->parameterizedMessage,
84 8
            'stacktrace' => Serialization::serialize(...$this->stackTraceFrameList),
85
        ]);
86
    }
87
}
88