Completed
Pull Request — master (#154)
by
unknown
01:18
created

JsonizeMonolog   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 0
dl 0
loc 26
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 23 4
1
<?php
2
3
namespace Rap2hpoutre\LaravelLogViewer;
4
5
use Monolog\Formatter\JsonFormatter;
6
7
class JsonizeMonolog
8
{
9
    public function __invoke($logger)
10
    {
11
        foreach ($logger->getHandlers() as $handler) {
12
            $handler->setFormatter(new JsonFormatter);
13
        }
14
        $logger->pushProcessor(function ($record) {
15
            if (isset($record['context']) && isset($record['context']['exception'])) {
16
                $e = $record['context']['exception'];
17
                $record['context']['exception'] = [
18
                    'message' => $e->getMessage(),
19
                    'code' => $e->getCode(),
20
                    'file' => $e->getFile(),
21
                    'line' => $e->getLine(),
22
                    'trace' => $e->getTraceAsString(),
23
                    'class' => get_class($e),
24
                    // TODO $e->getPrevious()
25
                ];
26
                $record['message'] .= ' | ' . get_class($e) .
27
                    ": {$e->getMessage()} (code: {$e->getCode()}) at {$e->getFile()} ({$e->getLine()})";
28
            }
29
            return $record;
30
        });
31
    }
32
}
33