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

JsonizeMonolog   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

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

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 24 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
                $firstTrace = $e->getTrace()[0];
27
                $record['message'] .= ' | ' . get_class($e) .
28
                    ": {$e->getMessage()} (code: {$e->getCode()}) at {$firstTrace['file']} ({$firstTrace['line']})";
29
            }
30
            return $record;
31
        });
32
    }
33
}
34