From b92fba9b7e5058e1a33c18daa178242d2219e272 Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 11:58:01 +0200 Subject: [PATCH 1/9] fix(logs): use PSR log level when using PSR-3 logger --- src/Logs/Log.php | 5 +++++ src/Logs/LogLevel.php | 18 ++++++++++++++++++ src/Logs/LogsAggregator.php | 2 +- tests/Logs/LogTest.php | 28 ++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/Logs/Log.php b/src/Logs/Log.php index 7c5b5b23b4..fcf41680c6 100644 --- a/src/Logs/Log.php +++ b/src/Logs/Log.php @@ -82,6 +82,11 @@ public function setLevel(LogLevel $level): self return $this; } + public function getPsrLogLevel(): string + { + return $this->level->asPsrLevel(); + } + public function getBody(): string { return $this->body; diff --git a/src/Logs/LogLevel.php b/src/Logs/LogLevel.php index 4e096daa33..a2c52da5e3 100644 --- a/src/Logs/LogLevel.php +++ b/src/Logs/LogLevel.php @@ -70,6 +70,24 @@ public function getPriority(): int return $this->priority; } + public function asPsrLevel(): string + { + switch ($this->value) { + case 'trace': + return \Psr\Log\LogLevel::NOTICE; + case 'debug': + return \Psr\Log\LogLevel::DEBUG; + case 'warn': + return \Psr\Log\LogLevel::WARNING; + case 'error': + return \Psr\Log\LogLevel::ERROR; + case 'fatal': + return \Psr\Log\LogLevel::CRITICAL; + default: + return \Psr\Log\LogLevel::INFO; + } + } + private static function getInstance(string $value, int $priority): self { if (!isset(self::$instances[$value])) { diff --git a/src/Logs/LogsAggregator.php b/src/Logs/LogsAggregator.php index 70b3715041..ca15b70327 100644 --- a/src/Logs/LogsAggregator.php +++ b/src/Logs/LogsAggregator.php @@ -149,7 +149,7 @@ public function add( // We check if it's a `LogsLogger` to avoid a infinite loop where the logger is logging the logs it's writing if ($sdkLogger !== null) { - $sdkLogger->log((string) $log->getLevel(), "Logs item: {$log->getBody()}", $log->attributes()->toSimpleArray()); + $sdkLogger->log($log->getPsrLogLevel(), "Logs item: {$log->getBody()}", $log->attributes()->toSimpleArray()); } $this->logs[] = $log; diff --git a/tests/Logs/LogTest.php b/tests/Logs/LogTest.php index 1cfba9c835..15b6b17247 100644 --- a/tests/Logs/LogTest.php +++ b/tests/Logs/LogTest.php @@ -32,4 +32,32 @@ public function testGettersAndSetters(): void $log->setBody('bar'); $this->assertSame('bar', $log->getBody()); } + + /** + * @dataProvider logLevelDataProvider + */ + public function testLogLevelToPsrMapping(LogLevel $logLevel, $expected): void + { + $this->assertSame($expected, $logLevel->asPsrLevel()); + } + + /** + * @dataProvider logLevelDataProvider + */ + public function testLogAndLogLevelConsistent(LogLevel $level, $expected): void + { + $log = new Log(1.0, '123', $level, 'foo'); + $this->assertSame($expected, $log->getPsrLogLevel()); + } + + private function logLevelDataProvider(): \Generator + { + yield 'Debug -> Debug' => [LogLevel::debug(), \Psr\Log\LogLevel::DEBUG]; + yield 'Trace -> Notice' => [LogLevel::trace(), \Psr\Log\LogLevel::NOTICE]; + yield 'Info -> Info' => [LogLevel::info(), \Psr\Log\LogLevel::INFO]; + yield 'Warn -> Warning' => [LogLevel::warn(), \Psr\Log\LogLevel::WARNING]; + yield 'Error -> Error' => [LogLevel::error(), \Psr\Log\LogLevel::ERROR]; + yield 'Fatal -> Critical' => [LogLevel::fatal(), \Psr\Log\LogLevel::CRITICAL]; + } + } From 6854e03a8b7ee76d937cd59ab86ba48f1eda6217 Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 11:58:31 +0200 Subject: [PATCH 2/9] lints --- tests/Logs/LogTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Logs/LogTest.php b/tests/Logs/LogTest.php index 15b6b17247..3c4e19fb0d 100644 --- a/tests/Logs/LogTest.php +++ b/tests/Logs/LogTest.php @@ -59,5 +59,4 @@ private function logLevelDataProvider(): \Generator yield 'Error -> Error' => [LogLevel::error(), \Psr\Log\LogLevel::ERROR]; yield 'Fatal -> Critical' => [LogLevel::fatal(), \Psr\Log\LogLevel::CRITICAL]; } - } From 3a0623a3afc770055dca708852d12e1e5405d727 Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 12:01:44 +0200 Subject: [PATCH 3/9] generator visiblity --- tests/Logs/LogTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Logs/LogTest.php b/tests/Logs/LogTest.php index 3c4e19fb0d..4522fc3d40 100644 --- a/tests/Logs/LogTest.php +++ b/tests/Logs/LogTest.php @@ -50,7 +50,7 @@ public function testLogAndLogLevelConsistent(LogLevel $level, $expected): void $this->assertSame($expected, $log->getPsrLogLevel()); } - private function logLevelDataProvider(): \Generator + public function logLevelDataProvider(): \Generator { yield 'Debug -> Debug' => [LogLevel::debug(), \Psr\Log\LogLevel::DEBUG]; yield 'Trace -> Notice' => [LogLevel::trace(), \Psr\Log\LogLevel::NOTICE]; From 8e21cd770ddf28c1eb356a9abaa40bf5f7d9909d Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 12:08:45 +0200 Subject: [PATCH 4/9] rename --- src/Logs/Log.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Logs/Log.php b/src/Logs/Log.php index fcf41680c6..c716e0d42c 100644 --- a/src/Logs/Log.php +++ b/src/Logs/Log.php @@ -82,7 +82,7 @@ public function setLevel(LogLevel $level): self return $this; } - public function getPsrLogLevel(): string + public function getPsrLevel(): string { return $this->level->asPsrLevel(); } From a4df2052fb28e7c6d5f8dea3edc733004e59e654 Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 12:09:50 +0200 Subject: [PATCH 5/9] rename --- src/Logs/Log.php | 2 +- src/Logs/LogLevel.php | 2 +- tests/Logs/LogTest.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Logs/Log.php b/src/Logs/Log.php index c716e0d42c..318f709741 100644 --- a/src/Logs/Log.php +++ b/src/Logs/Log.php @@ -84,7 +84,7 @@ public function setLevel(LogLevel $level): self public function getPsrLevel(): string { - return $this->level->asPsrLevel(); + return $this->level->toPsrLevel(); } public function getBody(): string diff --git a/src/Logs/LogLevel.php b/src/Logs/LogLevel.php index a2c52da5e3..14fbacfeb7 100644 --- a/src/Logs/LogLevel.php +++ b/src/Logs/LogLevel.php @@ -70,7 +70,7 @@ public function getPriority(): int return $this->priority; } - public function asPsrLevel(): string + public function toPsrLevel(): string { switch ($this->value) { case 'trace': diff --git a/tests/Logs/LogTest.php b/tests/Logs/LogTest.php index 4522fc3d40..3e60c6e887 100644 --- a/tests/Logs/LogTest.php +++ b/tests/Logs/LogTest.php @@ -38,7 +38,7 @@ public function testGettersAndSetters(): void */ public function testLogLevelToPsrMapping(LogLevel $logLevel, $expected): void { - $this->assertSame($expected, $logLevel->asPsrLevel()); + $this->assertSame($expected, $logLevel->toPsrLevel()); } /** @@ -47,7 +47,7 @@ public function testLogLevelToPsrMapping(LogLevel $logLevel, $expected): void public function testLogAndLogLevelConsistent(LogLevel $level, $expected): void { $log = new Log(1.0, '123', $level, 'foo'); - $this->assertSame($expected, $log->getPsrLogLevel()); + $this->assertSame($expected, $log->getPsrLevel()); } public function logLevelDataProvider(): \Generator From 879d4c7c6a45dcf2350a5c7a2df30388bc8630f5 Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 12:14:03 +0200 Subject: [PATCH 6/9] rename --- src/Logs/LogsAggregator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Logs/LogsAggregator.php b/src/Logs/LogsAggregator.php index ca15b70327..2e6c4d56e6 100644 --- a/src/Logs/LogsAggregator.php +++ b/src/Logs/LogsAggregator.php @@ -149,7 +149,7 @@ public function add( // We check if it's a `LogsLogger` to avoid a infinite loop where the logger is logging the logs it's writing if ($sdkLogger !== null) { - $sdkLogger->log($log->getPsrLogLevel(), "Logs item: {$log->getBody()}", $log->attributes()->toSimpleArray()); + $sdkLogger->log($log->getPsrLevel(), "Logs item: {$log->getBody()}", $log->attributes()->toSimpleArray()); } $this->logs[] = $log; From a59af64259378e02f620122359c26ccf84b727ba Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 12:30:42 +0200 Subject: [PATCH 7/9] mapping --- src/Logs/LogLevel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Logs/LogLevel.php b/src/Logs/LogLevel.php index 14fbacfeb7..2ed049f713 100644 --- a/src/Logs/LogLevel.php +++ b/src/Logs/LogLevel.php @@ -74,7 +74,6 @@ public function toPsrLevel(): string { switch ($this->value) { case 'trace': - return \Psr\Log\LogLevel::NOTICE; case 'debug': return \Psr\Log\LogLevel::DEBUG; case 'warn': @@ -83,6 +82,7 @@ public function toPsrLevel(): string return \Psr\Log\LogLevel::ERROR; case 'fatal': return \Psr\Log\LogLevel::CRITICAL; + case 'info': default: return \Psr\Log\LogLevel::INFO; } From c03ff7d284d79bd83c526c2adc698f8b4e77ee34 Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Mon, 15 Sep 2025 12:32:01 +0200 Subject: [PATCH 8/9] tests --- tests/Logs/LogTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Logs/LogTest.php b/tests/Logs/LogTest.php index 3e60c6e887..33d013daba 100644 --- a/tests/Logs/LogTest.php +++ b/tests/Logs/LogTest.php @@ -53,7 +53,7 @@ public function testLogAndLogLevelConsistent(LogLevel $level, $expected): void public function logLevelDataProvider(): \Generator { yield 'Debug -> Debug' => [LogLevel::debug(), \Psr\Log\LogLevel::DEBUG]; - yield 'Trace -> Notice' => [LogLevel::trace(), \Psr\Log\LogLevel::NOTICE]; + yield 'Trace -> Debug' => [LogLevel::trace(), \Psr\Log\LogLevel::DEBUG]; yield 'Info -> Info' => [LogLevel::info(), \Psr\Log\LogLevel::INFO]; yield 'Warn -> Warning' => [LogLevel::warn(), \Psr\Log\LogLevel::WARNING]; yield 'Error -> Error' => [LogLevel::error(), \Psr\Log\LogLevel::ERROR]; From 6b85b8775670e55633694e00be92b333041dd2ab Mon Sep 17 00:00:00 2001 From: Martin Linzmayer Date: Thu, 18 Sep 2025 13:45:28 +0200 Subject: [PATCH 9/9] remove stale comment --- src/Logs/LogsAggregator.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Logs/LogsAggregator.php b/src/Logs/LogsAggregator.php index 2e6c4d56e6..d17b04939c 100644 --- a/src/Logs/LogsAggregator.php +++ b/src/Logs/LogsAggregator.php @@ -147,7 +147,6 @@ public function add( return; } - // We check if it's a `LogsLogger` to avoid a infinite loop where the logger is logging the logs it's writing if ($sdkLogger !== null) { $sdkLogger->log($log->getPsrLevel(), "Logs item: {$log->getBody()}", $log->attributes()->toSimpleArray()); }