From 8749071fd0d36f619c6849a148017c537d84659d Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Mon, 8 Dec 2025 11:38:48 +0100 Subject: [PATCH 1/8] [Core] add PsrLogger and support RFC 5424 log level --- app/Mage.php | 18 +++++++++++++- app/code/core/Mage/Core/Model/PsrLogger.php | 26 +++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 app/code/core/Mage/Core/Model/PsrLogger.php diff --git a/app/Mage.php b/app/Mage.php index fb3f012b9e0..f8e65587724 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -870,7 +870,7 @@ public static function isInstalled($options = []) * log facility (??) * * @param array|object|string $message - * @param null|int|Level::* $level + * @param null|string|int|Level::* $level * @param null|string $file * @param bool $forceLog */ @@ -906,8 +906,24 @@ public static function log($message, $level = null, $file = '', $forceLog = fals $levelValue = $level->value; } elseif (is_null($level)) { $levelValue = Level::Debug->value; + } else if (is_string($level) && !is_numeric($level)) { + // PSR 3 Log level + $levelValue = Level::fromName($level)->value; } else { $levelValue = (int) $level; + // change RFC_5424 Log Level into Monolog. + if ($levelValue < 100) { + $levelValue = (match ($levelValue) { + 7 => Level::Debug, + 6 => Level::Info, + 5 => Level::Notice, + 4 => Level::Warning, + 3 => Level::Error, + 2 => Level::Critical, + 1 => Level::Alert, + 0 => Level::Emergency, + })->value; + } } if (!self::$_isDeveloperMode && $levelValue > $maxLogLevel && !$forceLog) { diff --git a/app/code/core/Mage/Core/Model/PsrLogger.php b/app/code/core/Mage/Core/Model/PsrLogger.php new file mode 100644 index 00000000000..bc8e57b2b38 --- /dev/null +++ b/app/code/core/Mage/Core/Model/PsrLogger.php @@ -0,0 +1,26 @@ + Date: Mon, 8 Dec 2025 11:46:07 +0100 Subject: [PATCH 2/8] fix style --- app/Mage.php | 4 ++-- app/code/core/Mage/Core/Model/PsrLogger.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Mage.php b/app/Mage.php index f8e65587724..7e548ea31c7 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -870,7 +870,7 @@ public static function isInstalled($options = []) * log facility (??) * * @param array|object|string $message - * @param null|string|int|Level::* $level + * @param null|int|Level::*|string $level * @param null|string $file * @param bool $forceLog */ @@ -906,7 +906,7 @@ public static function log($message, $level = null, $file = '', $forceLog = fals $levelValue = $level->value; } elseif (is_null($level)) { $levelValue = Level::Debug->value; - } else if (is_string($level) && !is_numeric($level)) { + } elseif (is_string($level) && !is_numeric($level)) { // PSR 3 Log level $levelValue = Level::fromName($level)->value; } else { diff --git a/app/code/core/Mage/Core/Model/PsrLogger.php b/app/code/core/Mage/Core/Model/PsrLogger.php index bc8e57b2b38..f919abdcecb 100644 --- a/app/code/core/Mage/Core/Model/PsrLogger.php +++ b/app/code/core/Mage/Core/Model/PsrLogger.php @@ -19,8 +19,8 @@ class Mage_Core_Model_PsrLogger extends Mage_Core_Model_Abstract implements Logg { use LoggerTrait; - public function log($level, \Stringable|string $message, array $context = []): void + public function log($level, string|\Stringable $message, array $context = []): void { - Mage::log((string)$message, $level, null, false, $context); + Mage::log((string) $message, $level, null, false, $context); } } \ No newline at end of file From a7e7ebda757b36d210dc1b066b162422f367ebe5 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Mon, 8 Dec 2025 11:49:55 +0100 Subject: [PATCH 3/8] fix compatible with Varien_Object::debug --- app/code/core/Mage/Core/{Model => Helper}/PsrLogger.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename app/code/core/Mage/Core/{Model => Helper}/PsrLogger.php (84%) diff --git a/app/code/core/Mage/Core/Model/PsrLogger.php b/app/code/core/Mage/Core/Helper/PsrLogger.php similarity index 84% rename from app/code/core/Mage/Core/Model/PsrLogger.php rename to app/code/core/Mage/Core/Helper/PsrLogger.php index f919abdcecb..d3b3832dce2 100644 --- a/app/code/core/Mage/Core/Model/PsrLogger.php +++ b/app/code/core/Mage/Core/Helper/PsrLogger.php @@ -15,7 +15,7 @@ * * @package Mage_Core */ -class Mage_Core_Model_PsrLogger extends Mage_Core_Model_Abstract implements LoggerInterface +class Mage_Core_Helper_PsrLogger extends Mage_Core_Helper_Abstract implements LoggerInterface { use LoggerTrait; From 72a44486d28903424c35db6e09f38576d652850b Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Mon, 8 Dec 2025 11:50:53 +0100 Subject: [PATCH 4/8] fix missing newline --- app/code/core/Mage/Core/Helper/PsrLogger.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/PsrLogger.php b/app/code/core/Mage/Core/Helper/PsrLogger.php index d3b3832dce2..7d0f6d98713 100644 --- a/app/code/core/Mage/Core/Helper/PsrLogger.php +++ b/app/code/core/Mage/Core/Helper/PsrLogger.php @@ -23,4 +23,4 @@ public function log($level, string|\Stringable $message, array $context = []): v { Mage::log((string) $message, $level, null, false, $context); } -} \ No newline at end of file +} From 9e06542a67894530801ade11f0c567cbef3967f6 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Mon, 8 Dec 2025 12:49:09 +0100 Subject: [PATCH 5/8] ~ reduce the log level range --- app/Mage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Mage.php b/app/Mage.php index 7e548ea31c7..70de938ca94 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -912,7 +912,7 @@ public static function log($message, $level = null, $file = '', $forceLog = fals } else { $levelValue = (int) $level; // change RFC_5424 Log Level into Monolog. - if ($levelValue < 100) { + if ($levelValue >= 0 && $levelValue <= 7) { $levelValue = (match ($levelValue) { 7 => Level::Debug, 6 => Level::Info, From 06a42a517ccfe60e89a00da30fde0432bb0ccb9f Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Tue, 9 Dec 2025 09:55:47 +0100 Subject: [PATCH 6/8] apply suggestions --- app/Mage.php | 11 +++++++++-- app/code/core/Mage/Core/Helper/PsrLogger.php | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/Mage.php b/app/Mage.php index 70de938ca94..530c103b56f 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -908,10 +908,14 @@ public static function log($message, $level = null, $file = '', $forceLog = fals $levelValue = Level::Debug->value; } elseif (is_string($level) && !is_numeric($level)) { // PSR 3 Log level - $levelValue = Level::fromName($level)->value; + try { + $levelValue = Level::fromName($level)->value; + } catch (ValueError) { + $levelValue = Level::Debug->value; // fallback to debug level + } } else { $levelValue = (int) $level; - // change RFC_5424 Log Level into Monolog. + // change RFC 5424 Log Level into Monolog. if ($levelValue >= 0 && $levelValue <= 7) { $levelValue = (match ($levelValue) { 7 => Level::Debug, @@ -923,6 +927,9 @@ public static function log($message, $level = null, $file = '', $forceLog = fals 1 => Level::Alert, 0 => Level::Emergency, })->value; + } elseif ($levelValue < 100) { + // unknown levels are treated as debug + $levelValue = Level::Debug->value; // fallback to debug level } } diff --git a/app/code/core/Mage/Core/Helper/PsrLogger.php b/app/code/core/Mage/Core/Helper/PsrLogger.php index 7d0f6d98713..fe32f9878d0 100644 --- a/app/code/core/Mage/Core/Helper/PsrLogger.php +++ b/app/code/core/Mage/Core/Helper/PsrLogger.php @@ -1,5 +1,7 @@ getConstants())) { + throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', $reflectionClass->getConstants())); + } Mage::log((string) $message, $level, null, false, $context); } } From f400438fa78fed33ee2fb774104f01eca98df933 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Tue, 9 Dec 2025 10:09:16 +0100 Subject: [PATCH 7/8] ~ check style --- app/code/core/Mage/Core/Helper/PsrLogger.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/PsrLogger.php b/app/code/core/Mage/Core/Helper/PsrLogger.php index fe32f9878d0..37402d951bd 100644 --- a/app/code/core/Mage/Core/Helper/PsrLogger.php +++ b/app/code/core/Mage/Core/Helper/PsrLogger.php @@ -33,7 +33,7 @@ public function log($level, string|\Stringable $message, array $context = []): v // unknown log level need to throw an InvalidArgumentException $reflectionClass = new ReflectionClass(LogLevel::class); if (!in_array($level, $reflectionClass->getConstants())) { - throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', $reflectionClass->getConstants())); + throw new InvalidArgumentException('Level "' . $level . '" is not defined, use one of: ' . implode(', ', $reflectionClass->getConstants())); } Mage::log((string) $message, $level, null, false, $context); } From 0a4d7bf4a06f89a2b3c6daf820e5b72667c7cc25 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Tue, 9 Dec 2025 10:13:32 +0100 Subject: [PATCH 8/8] ~ rector --- app/code/core/Mage/Core/Helper/PsrLogger.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/core/Mage/Core/Helper/PsrLogger.php b/app/code/core/Mage/Core/Helper/PsrLogger.php index 37402d951bd..9c33b1e08c5 100644 --- a/app/code/core/Mage/Core/Helper/PsrLogger.php +++ b/app/code/core/Mage/Core/Helper/PsrLogger.php @@ -35,6 +35,7 @@ public function log($level, string|\Stringable $message, array $context = []): v if (!in_array($level, $reflectionClass->getConstants())) { throw new InvalidArgumentException('Level "' . $level . '" is not defined, use one of: ' . implode(', ', $reflectionClass->getConstants())); } + Mage::log((string) $message, $level, null, false, $context); } }