Lines 100.00% 8 / 8
Functions and Methods 100.00% 3 / 3
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
LogRecordHandler 100.00% 8 / 8 100.00% 3 / 3 3 100.00% 1 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 handledMessageClass 100.00% 1 / 1 100.00% 1 / 1 1
 handle 100.00% 6 / 6 100.00% 1 / 1 1
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Runtime\Broker\Message;
6
7use Psr\Log\LoggerInterface;
8use Stewart\Runtime\Broker\WorkerHandle;
9use Stewart\Runtime\Ipc\Message\LogRecord;
10use Stewart\Runtime\Ipc\Message\WorkerMessage;
11use Stewart\Runtime\Model\ExceptionDetails;
12
13/** @implements WorkerMessageHandler<LogRecord> */
14final readonly class LogRecordHandler implements WorkerMessageHandler
15{
16    public function __construct(private LoggerInterface $logger) {}
17
18    public function handledMessageClass(): string
19    {
20        return LogRecord::class;
21    }
22
23    /** @param LogRecord $message */
24    public function handle(WorkerHandle $handle, WorkerMessage $message): void
25    {
26        $this->logger->log($message->level->value, $message->message, [
27            ...$message->context,
28            'app' => $message->scope->wireValue(),
29            'worker' => $handle->id->value,
30            ExceptionDetails::CONTEXT_KEY => $message->exception,
31        ]);
32    }
33}