Completed
Push — master ( 75018b...9f7060 )
by Radu
01:54
created

ErrorProcessor::logException()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
c 0
b 0
f 0
dl 0
loc 13
rs 9.9666
cc 3
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace WebServCo\Framework\Processors;
6
7
use WebServCo\Framework\Helpers\ErrorMessageHelper;
8
use WebServCo\Framework\Interfaces\LoggerInterface;
9
10
/**
11
* A helper class for logging exceptions to a standard error(CLI) log file.
12
*/
13
class ErrorProcessor
14
{
15
    protected LoggerInterface $fileLogger;
16
17
    public function __construct()
18
    {
19
        $this->fileLogger = new \WebServCo\Framework\Log\FileLogger(
20
            \WebServCo\Framework\Helpers\PhpHelper::isCli() ? 'errorCLI' : 'error',
21
            \WebServCo\Framework\Environment\Config::string('APP_PATH_LOG'),
22
        );
23
    }
24
25
    public function logException(\Throwable $exception): void
26
    {
27
        $message = ErrorMessageHelper::format($exception);
28
        $this->fileLogger->error($message, ['message' => $message, 'trace' => $exception->getTrace()]);
29
        $previous = $exception->getPrevious();
30
        if (!$previous instanceof \Throwable) {
0 ignored issues
show
introduced by
$previous is always a sub-type of Throwable.
Loading history...
31
            return;
32
        }
33
        do {
34
            $message = ErrorMessageHelper::format($previous);
35
            $this->fileLogger->error($message, ['message' => $message, 'trace' => $previous->getTrace()]);
36
        // phpcs:ignore SlevomatCodingStandard.ControlStructures.AssignmentInCondition.AssignmentInCondition
37
        } while ($previous = $previous->getPrevious());
38
    }
39
40
    public function logRequest(\WebServCo\Framework\Interfaces\RequestInterface $requestInterface): bool
41
    {
42
        // \Psr\Log\LoggerInterface requires $context to be an array
43
        $this->fileLogger->debug(
44
            'RequestInterface debug',
45
            [
46
                'args' => $requestInterface->getArgs(),
47
                'body' => $requestInterface->getBody(),
48
                'contentType' => $requestInterface->getContentType(),
49
                'data' => $requestInterface->getData(),
50
                'method' => $requestInterface->getMethod(),
51
                'query' => $requestInterface->getQuery(),
52
                'remoteAddress' => $requestInterface->getRemoteAddress(),
53
                'url' => $requestInterface->getUrl(),
54
                'userAgent' => $requestInterface->getUserAgent(),
55
            ],
56
        );
57
        return true;
58
    }
59
}
60