LogRecorder::toArray()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
cc 2
nc 2
nop 0
1
<?php
2
3
namespace Facade\Ignition\LogRecorder;
4
5
use Illuminate\Contracts\Foundation\Application;
6
use Illuminate\Log\Events\MessageLogged;
7
use Throwable;
8
9
class LogRecorder
10
{
11
    /** @var \Facade\Flare\LogRecorder\LogMessage[] */
12
    protected $logMessages = [];
13
14
    /** @var \Illuminate\Contracts\Foundation\Application */
15
    protected $app;
16
17
    public function __construct(Application $app)
18
    {
19
        $this->app = $app;
20
    }
21
22
    public function register(): self
23
    {
24
        $this->app['events']->listen(MessageLogged::class, [$this, 'record']);
25
26
        return $this;
27
    }
28
29
    public function record(MessageLogged $event): void
30
    {
31
        if ($this->shouldIgnore($event)) {
32
            return;
33
        }
34
35
        $this->logMessages[] = LogMessage::fromMessageLoggedEvent($event);
36
    }
37
38
    public function getLogMessages(): array
39
    {
40
        return $this->toArray();
41
    }
42
43
    public function toArray(): array
44
    {
45
        $logMessages = [];
46
47
        foreach ($this->logMessages as $log) {
48
            $logMessages[] = $log->toArray();
49
        }
50
51
        return $logMessages;
52
    }
53
54
    protected function shouldIgnore($event): bool
55
    {
56
        if (! isset($event->context['exception'])) {
57
            return false;
58
        }
59
60
        if (! $event->context['exception'] instanceof Throwable) {
61
            return false;
62
        }
63
64
        return true;
65
    }
66
67
    public function reset(): void
68
    {
69
        $this->logMessages = [];
70
    }
71
}
72