LogRecorder   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 1

Importance

Changes 0
Metric Value
wmc 11
lcom 2
cbo 1
dl 0
loc 63
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A register() 0 6 1
A record() 0 8 2
A getLogMessages() 0 4 1
A toArray() 0 10 2
A shouldIgnore() 0 12 3
A reset() 0 4 1
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