Completed
Push — master ( ef09e8...2a4db2 )
by Jaap
8s
created

printWithoutException()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
3
namespace PolderKnowledge\LogModule\Formatter;
4
5
use Monolog\Formatter\FormatterInterface;
6
use Monolog\Formatter\NormalizerFormatter;
7
8
/**
9
 * Format an Exception in a similar way PHP does by default when an exception bubbles to the top
10
 */
11
class HumanReadableExceptionFormatter extends NormalizerFormatter implements FormatterInterface
12
{
13
    public function format(array $record): string
14
    {
15
        $exception = $record['context']['exception'] ?? null;
16
        if ($exception) {
17
            return $this->printFromException($exception);
18
        } else {
19
            return $this->printWithoutException($record);
20
        }
21
    }
22
23
    protected function printWithoutException(array $record): string
24
    {
25
        return sprintf('[%s] %s: %s', ...[
26
            date('r'),
27
            $record['level_name'],
28
            $record['message']
29
        ]);
30
    }
31
    
32
    protected function printFromException(\Throwable $exception)
33
    {
34
        return implode("\n", ExceptionPrinter::linesFromException($exception)) . "\n"
35
            . "---------------------------------------\n";
36
    }
37
}
38