From 749136c3721927d0bf8eb84b26d8a1a471c0a719 Mon Sep 17 00:00:00 2001 From: Maxim Smakouz Date: Tue, 2 Jan 2024 18:47:43 +0200 Subject: [PATCH 1/2] Add support for monolog/monolog 3.x --- src/Logger/Handler.php | 9 ++++++--- tests/src/Logger/HandlerTest.php | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Logger/Handler.php b/src/Logger/Handler.php index 4a56fc7..9f387ee 100644 --- a/src/Logger/Handler.php +++ b/src/Logger/Handler.php @@ -8,7 +8,9 @@ use Monolog\Formatter\LineFormatter; use Monolog\Handler\AbstractProcessingHandler; use Monolog\Handler\HandlerInterface; +use Monolog\Level; use Monolog\Logger; +use Monolog\LogRecord; use RoadRunner\Logger\Logger as RoadRunnerLogger; final class Handler extends AbstractProcessingHandler @@ -29,7 +31,7 @@ public function __construct( $this->setFormatter($formatter); } - public function handle(array $record): bool + public function handle(array|LogRecord $record): bool { if ($this->fallbackHandler !== null) { return $this->fallbackHandler->handle($record); @@ -38,11 +40,12 @@ public function handle(array $record): bool return parent::handle($record); } - protected function write(array $record): void + protected function write(array|LogRecord $record): void { $message = $record['formatted']; - match ($record['level']) { + $level = $record['level'] instanceof Level ? $record['level']->value : $record['level']; + match ($level) { Logger::ERROR, Logger::CRITICAL => $this->logger->error($message), Logger::WARNING, Logger::ALERT, Logger::EMERGENCY => $this->logger->warning($message), Logger::INFO, Logger::NOTICE => $this->logger->info($message), diff --git a/tests/src/Logger/HandlerTest.php b/tests/src/Logger/HandlerTest.php index 59f92ca..390747e 100644 --- a/tests/src/Logger/HandlerTest.php +++ b/tests/src/Logger/HandlerTest.php @@ -4,6 +4,7 @@ namespace Spiral\Tests\Logger; +use Monolog\LogRecord; use RoadRunner\Logger\Logger; use Spiral\Goridge\RPC\RPCInterface; use Monolog\Handler\HandlerInterface; @@ -54,7 +55,7 @@ public function testLoggerShouldSendDataToFallback(): void ), ]); - $fallback->shouldReceive('handle')->withArgs(function (array $record) { + $fallback->shouldReceive('handle')->withArgs(function (array|LogRecord $record) { return $record['message'] === 'Error message'; })->andReturn(true); From 81450a36de55f36f01225392a4047de00e6022e6 Mon Sep 17 00:00:00 2001 From: Maxim Smakouz Date: Tue, 2 Jan 2024 19:05:31 +0200 Subject: [PATCH 2/2] Fix Psalm issues --- src/Logger/Handler.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Logger/Handler.php b/src/Logger/Handler.php index 9f387ee..c4cdd17 100644 --- a/src/Logger/Handler.php +++ b/src/Logger/Handler.php @@ -42,9 +42,13 @@ public function handle(array|LogRecord $record): bool protected function write(array|LogRecord $record): void { + /** @psalm-suppress InvalidArgument */ $message = $record['formatted']; + \assert(\is_string($message) || $message instanceof \Stringable); $level = $record['level'] instanceof Level ? $record['level']->value : $record['level']; + + /** @psalm-suppress DeprecatedConstant */ match ($level) { Logger::ERROR, Logger::CRITICAL => $this->logger->error($message), Logger::WARNING, Logger::ALERT, Logger::EMERGENCY => $this->logger->warning($message),