Lines 100.00% 5 / 5
Functions and Methods 100.00% 2 / 2
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
ProcessTimeZoneProcessor 100.00% 5 / 5 100.00% 2 / 2 3 100.00% 1 / 1
 __invoke 100.00% 1 / 1 100.00% 1 / 1 1
 findProcessZone 100.00% 4 / 4 100.00% 1 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Runtime\Logging;
6
7use DateTimeZone;
8use Monolog\LogRecord;
9use Monolog\Processor\ProcessorInterface;
10
11final class ProcessTimeZoneProcessor implements ProcessorInterface
12{
13    private ?DateTimeZone $zone = null;
14
15    public function __invoke(LogRecord $record): LogRecord
16    {
17        return $record->with(datetime: $record->datetime->setTimezone($this->findProcessZone()));
18    }
19
20    private function findProcessZone(): DateTimeZone
21    {
22        $name = date_default_timezone_get();
23
24        if ($this->zone?->getName() !== $name) {
25            $this->zone = new DateTimeZone($name);
26        }
27
28        return $this->zone;
29    }
30}