PsrLogger   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 31
c 1
b 0
f 0
dl 0
loc 73
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A begin() 0 9 1
A __construct() 0 8 1
A error() 0 10 1
A complete() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cushon\HealthBundle\Handler\CheckHealth\Logger;
6
7
use Cushon\HealthBundle\Encoder\Json\Encoder;
8
use Cushon\HealthBundle\Handler\CheckHealth\Exception\CheckHealthHandlerError;
9
use Cushon\HealthBundle\Handler\CheckHealth\Logger;
10
use Cushon\HealthBundle\Message\Query\HealthCheck as HealthCheckQuery;
11
use Cushon\HealthBundle\Message\Result\HealthCheck as HealthCheckResult;
12
use Psr\Log\LoggerInterface;
13
use Psr\Log\LogLevel;
14
15
class PsrLogger implements Logger
16
{
17
    public const LOG_CONTEXT_HEALTH = 'health';
18
    public const LOG_CONTEXT_HANDLER = 'handler';
19
20
    public const LOG_CONTEXTS = [
21
        self::LOG_CONTEXT_HEALTH,
22
        self::LOG_CONTEXT_HANDLER
23
    ];
24
25
    private LoggerInterface $logger;
26
27
    private string $logLevel;
28
    private Encoder $encoder;
29
30
    /**
31
     * @param LoggerInterface $logger
32
     * @param string $logLevel
33
     */
34
    public function __construct(
35
        LoggerInterface $logger,
36
        Encoder $encoder,
37
        string $logLevel = LogLevel::INFO
38
    ) {
39
        $this->logger = $logger;
40
        $this->encoder = $encoder;
41
        $this->logLevel = $logLevel;
42
    }
43
44
45
    /**
46
     * @inheritDoc
47
     */
48
    public function begin(HealthCheckQuery $healthCheckQuery): void
49
    {
50
        $this->logger->log(
51
            $this->logLevel,
52
            sprintf(
53
                'Beginning application health check (query: %s)',
54
                get_class($healthCheckQuery)
55
            ),
56
            self::LOG_CONTEXTS
57
        );
58
    }
59
60
    /**
61
     * @inheritDoc
62
     */
63
    public function complete(HealthCheckResult $healthCheckResult): void
64
    {
65
        $this->logger->log(
66
            $this->logLevel,
67
            sprintf(
68
                'HealthReport check complete. Result: %s',
69
                $this->encoder->encode($healthCheckResult)
70
            ),
71
            self::LOG_CONTEXTS
72
        );
73
    }
74
75
    /**
76
     * @inheritDoc
77
     */
78
    public function error(CheckHealthHandlerError $exc): void
79
    {
80
        $this->logger->log(
81
            LogLevel::ERROR,
82
            sprintf(
83
                'HealthReport check failed. %s:"%s"',
84
                get_class($exc),
85
                $exc->getMessage()
86
            ),
87
            self::LOG_CONTEXTS
88
        );
89
    }
90
}
91