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

JsonizeMonolog::__invoke()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 23
rs 9.552
c 0
b 0
f 0
cc 4
nc 2
nop 1
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