From f544f17e34b33e727263aab421bc6e3c40d85e7b Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 01:12:58 +0100 Subject: [PATCH 01/34] moved log code to Mage_Core_Helper_Log --- .phpstorm.meta.php/magento_helpers.meta.php | 7 +- .../magento_helpers_methods.meta.php | 112 ++++++++---------- .phpstorm.meta.php/magento_models.meta.php | 10 -- .../magento_models_methods.meta.php | 45 ------- .rector.php | 5 + app/Mage.php | 36 ++---- app/code/core/Mage/Core/Helper/Data.php | 25 +++- app/code/core/Mage/Core/Helper/Log.php | 111 +++++++++++++++++ .../core_setup/upgrade-1.6.0.10-1.6.0.11.php | 4 +- 9 files changed, 196 insertions(+), 159 deletions(-) create mode 100644 app/code/core/Mage/Core/Helper/Log.php diff --git a/.phpstorm.meta.php/magento_helpers.meta.php b/.phpstorm.meta.php/magento_helpers.meta.php index 5971fb5ca06..900e74533cf 100644 --- a/.phpstorm.meta.php/magento_helpers.meta.php +++ b/.phpstorm.meta.php/magento_helpers.meta.php @@ -2,10 +2,6 @@ namespace PHPSTORM_META { override( \Mage::helper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -96,6 +92,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, diff --git a/.phpstorm.meta.php/magento_helpers_methods.meta.php b/.phpstorm.meta.php/magento_helpers_methods.meta.php index e55d8b590b3..0a8d465cf24 100644 --- a/.phpstorm.meta.php/magento_helpers_methods.meta.php +++ b/.phpstorm.meta.php/magento_helpers_methods.meta.php @@ -2,10 +2,6 @@ namespace PHPSTORM_META { override( \Mage_Admin_Model_User::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -96,6 +92,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -203,10 +202,6 @@ ); override( \Mage_Adminhtml_Controller_Rss_Abstract::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -297,6 +292,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -404,10 +402,6 @@ ); override( \Mage_Adminhtml_Tax_RuleController::_getHelperModel(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -498,6 +492,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -605,10 +602,6 @@ ); override( \Mage_Api_Model_User::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -699,6 +692,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -806,10 +802,6 @@ ); override( \Mage_Bundle_Model_Product_Price::_getHelperData(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -900,6 +892,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -1007,10 +1002,6 @@ ); override( \Mage_Core_Block_Abstract::helper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -1101,6 +1092,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -1208,10 +1202,6 @@ ); override( \Mage_Core_Model_App::getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -1302,6 +1292,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -1409,10 +1402,6 @@ ); override( \Mage_Core_Model_Factory::getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -1503,6 +1492,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -1610,10 +1602,6 @@ ); override( \Mage_Core_Model_Layout::helper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -1704,6 +1692,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -1811,10 +1802,6 @@ ); override( \Mage_Customer_AccountController::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -1905,6 +1892,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -2012,10 +2002,6 @@ ); override( \Mage_Customer_Model_Customer::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -2106,6 +2092,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -2213,10 +2202,6 @@ ); override( \Mage_ImportExport_Model_Import_Entity_Product::getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -2307,6 +2292,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -2414,10 +2402,6 @@ ); override( \Mage_Rss_Controller_Abstract::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -2508,6 +2492,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -2615,10 +2602,6 @@ ); override( \Mage_SalesRule_Model_Validator::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -2709,6 +2692,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -2816,10 +2802,6 @@ ); override( \Mage_Weee_Helper_Data::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -2910,6 +2892,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, @@ -3017,10 +3002,6 @@ ); override( \Mage_Weee_Model_Config_Source_Fpt_Tax::_getHelper(0), map( [ - 'mm_ignition' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/data' => \MM_Ignition_Helper_Data::class, - 'mm_ignition/flare' => \MM_Ignition_Helper_Flare::class, - 'mm_ignition/openAi' => \MM_Ignition_Helper_OpenAi::class, 'adminnotification' => \Mage_AdminNotification_Helper_Data::class, 'adminnotification/data' => \Mage_AdminNotification_Helper_Data::class, 'admin/block' => \Mage_Admin_Helper_Block::class, @@ -3111,6 +3092,9 @@ 'core/hint' => \Mage_Core_Helper_Hint::class, 'core/http' => \Mage_Core_Helper_Http::class, 'core/js' => \Mage_Core_Helper_Js::class, + 'core/log' => \Mage_Core_Helper_Log::class, + 'core/measure_length' => \Mage_Core_Helper_Measure_Length::class, + 'core/measure_weight' => \Mage_Core_Helper_Measure_Weight::class, 'core/purifier' => \Mage_Core_Helper_Purifier::class, 'core/security' => \Mage_Core_Helper_Security::class, 'core/string' => \Mage_Core_Helper_String::class, diff --git a/.phpstorm.meta.php/magento_models.meta.php b/.phpstorm.meta.php/magento_models.meta.php index 6859629995a..577b7ef53de 100644 --- a/.phpstorm.meta.php/magento_models.meta.php +++ b/.phpstorm.meta.php/magento_models.meta.php @@ -8,11 +8,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -3172,11 +3167,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, diff --git a/.phpstorm.meta.php/magento_models_methods.meta.php b/.phpstorm.meta.php/magento_models_methods.meta.php index 2b6431c9f3a..8c60cceccfd 100644 --- a/.phpstorm.meta.php/magento_models_methods.meta.php +++ b/.phpstorm.meta.php/magento_models_methods.meta.php @@ -8,11 +8,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -3172,11 +3167,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -6336,11 +6326,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -9500,11 +9485,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -12664,11 +12644,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -15828,11 +15803,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -18992,11 +18962,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -22156,11 +22121,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, @@ -25320,11 +25280,6 @@ 'cm_redissession/session_config' => \Cm_RedisSession_Model_Session_Config::class, 'cm_redissession/session_handler' => \Cm_RedisSession_Model_Session_Handler::class, 'cm_redissession/session_logger' => \Cm_RedisSession_Model_Session_Logger::class, - 'mm_ignition/observer_abstract' => \MM_Ignition_Model_Observer_Abstract::class, - 'mm_ignition/observer_handleIgnitionException' => \MM_Ignition_Model_Observer_HandleIgnitionException::class, - 'mm_ignition/observer_handleIgnitionRegister' => \MM_Ignition_Model_Observer_HandleIgnitionRegister::class, - 'mm_ignition/system_config_source_editor' => \MM_Ignition_Model_System_Config_Source_Editor::class, - 'mm_ignition/system_config_source_theme' => \MM_Ignition_Model_System_Config_Source_Theme::class, 'adminnotification/feed' => \Mage_AdminNotification_Model_Feed::class, 'adminnotification/inbox' => \Mage_AdminNotification_Model_Inbox::class, 'adminnotification/mysql4_inbox' => \Mage_AdminNotification_Model_Mysql4_Inbox::class, diff --git a/.rector.php b/.rector.php index 5dbfead5689..798a1179b0b 100644 --- a/.rector.php +++ b/.rector.php @@ -46,6 +46,11 @@ Php85\ArrayDimFetch\ArrayFirstLastRector::class, ]) ->withConfiguredRule(RenameClassConstFetchRector::class, [ + new RenameClassAndConstFetch('Mage_Core_Helper_Data', 'XML_PATH_DEV_LOG_ENABLED', 'Mage_Core_Helper_Log', 'XML_PATH_DEV_LOG_ENABLED'), + new RenameClassAndConstFetch('Mage_Core_Helper_Data', 'XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS', 'Mage_Core_Helper_Log', 'XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS'), + new RenameClassAndConstFetch('Mage_Core_Helper_Data', 'XML_PATH_DEV_LOG_FILE', 'Mage_Core_Helper_Log', 'XML_PATH_DEV_LOG_FILE'), + new RenameClassAndConstFetch('Mage_Core_Helper_Data', 'XML_PATH_DEV_LOG_EXCEPTION_FILE', 'Mage_Core_Helper_Log', 'XML_PATH_DEV_LOG_EXCEPTION_FILE'), + new RenameClassAndConstFetch('Mage_Core_Helper_Data', 'XML_PATH_DEV_LOG_MAX_LEVEL', 'Mage_Core_Helper_Log', 'XML_PATH_DEV_LOG_MAX_LEVEL'), new RenameClassAndConstFetch('Zend_Log', 'EMERG', 'Monolog\Level', 'Emergency'), new RenameClassAndConstFetch('Zend_Log', 'ALERT', 'Monolog\Level', 'Alert'), new RenameClassAndConstFetch('Zend_Log', 'CRIT', 'Monolog\Level', 'Critical'), diff --git a/app/Mage.php b/app/Mage.php index 34320067648..b0a42c0d370 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -885,9 +885,9 @@ public static function log($message, $level = null, $file = '', $forceLog = fals } try { - $logActive = self::getStoreConfigFlag(Mage_Core_Helper_Data::XML_PATH_DEV_LOG_ENABLED); + $logActive = self::getStoreConfigFlag(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ENABLED); if (empty($file)) { - $file = self::getStoreConfig(Mage_Core_Helper_Data::XML_PATH_DEV_LOG_FILE); + $file = self::getStoreConfig(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_FILE); } } catch (Exception) { $logActive = true; @@ -899,41 +899,19 @@ public static function log($message, $level = null, $file = '', $forceLog = fals static $loggers = []; - try { - $maxLogLevel = self::getStoreConfigAsInt(Mage_Core_Helper_Data::XML_PATH_DEV_LOG_MAX_LEVEL); - } catch (Throwable) { - $maxLogLevel = Level::Debug->value; - } - - // Normalize both $level and $maxLogLevel to integers for comparison - if ($level instanceof Level) { - $levelValue = $level->value; - } elseif (is_null($level)) { - $levelValue = Level::Debug->value; - } else { - $levelValue = (int) $level; - } + $maxLogLevel = Mage_Core_Helper_Log::getLogLevelMax(); + $levelValue = Mage_Core_Helper_Log::getLogLevel($level); if (!self::$_isDeveloperMode && $levelValue > $maxLogLevel && !$forceLog) { return; } - $file = empty($file) - ? (string) self::getConfig()->getNode( - Mage_Core_Helper_Data::XML_PATH_DEV_LOG_FILE, - Mage_Core_Model_Store::DEFAULT_CODE, - ) : basename($file); + $file = empty($file) ? Mage_Core_Helper_Log::getLogFile() : basename($file); try { if (!isset($loggers[$file])) { // Validate file extension before save. Allowed file extensions: log, txt, html, csv - $_allowedFileExtensions = explode( - ',', - (string) self::getConfig()->getNode( - Mage_Core_Helper_Data::XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS, - Mage_Core_Model_Store::DEFAULT_CODE, - ), - ); + $_allowedFileExtensions = Mage_Core_Helper_Log::getAlowedFileExtensions(); if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { return; } @@ -985,7 +963,7 @@ public static function logException(Throwable $e) return; } - $file = self::getStoreConfig(Mage_Core_Helper_Data::XML_PATH_DEV_LOG_EXCEPTION_FILE); + $file = self::getStoreConfig(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_EXCEPTION_FILE); self::log("\n" . $e->__toString(), Level::Error, $file); } diff --git a/app/code/core/Mage/Core/Helper/Data.php b/app/code/core/Mage/Core/Helper/Data.php index be1e632543e..3cd94408d80 100644 --- a/app/code/core/Mage/Core/Helper/Data.php +++ b/app/code/core/Mage/Core/Helper/Data.php @@ -24,15 +24,30 @@ class Mage_Core_Helper_Data extends Mage_Core_Helper_Abstract public const XML_PATH_DEV_ALLOW_IPS = 'dev/restrict/allow_ips'; - public const XML_PATH_DEV_LOG_ENABLED = 'dev/log/active'; + /** + * @deprecated use Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ENABLED instead + */ + public const XML_PATH_DEV_LOG_ENABLED = Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ENABLED; - public const XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS = 'dev/log/allowedFileExtensions'; + /** + * @deprecated use Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS instead + */ + public const XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS = Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS; - public const XML_PATH_DEV_LOG_FILE = 'dev/log/file'; + /** + * @deprecated use Mage_Core_Helper_Log::XML_PATH_DEV_LOG_FILE instead + */ + public const XML_PATH_DEV_LOG_FILE = Mage_Core_Helper_Log::XML_PATH_DEV_LOG_FILE; - public const XML_PATH_DEV_LOG_EXCEPTION_FILE = 'dev/log/exception_file'; + /** + * @deprecated use Mage_Core_Helper_Log::XML_PATH_DEV_LOG_EXCEPTION_FILE instead + */ + public const XML_PATH_DEV_LOG_EXCEPTION_FILE = Mage_Core_Helper_Log::XML_PATH_DEV_LOG_EXCEPTION_FILE; - public const XML_PATH_DEV_LOG_MAX_LEVEL = 'dev/log/max_level'; + /** + * @deprecated use Mage_Core_Helper_Log::XML_PATH_DEV_LOG_MAX_LEVEL instead + */ + public const XML_PATH_DEV_LOG_MAX_LEVEL = Mage_Core_Helper_Log::XML_PATH_DEV_LOG_MAX_LEVEL; public const XML_PATH_CACHE_BETA_TYPES = 'global/cache/betatypes'; diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php new file mode 100644 index 00000000000..99a37113974 --- /dev/null +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -0,0 +1,111 @@ += 0 && $levelValue <= 7) { + $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, + }); + } else { + // unknown levels are treated as debug + $levelValue = Level::Debug; // fallback to debug level + } + } + + return $levelValue->value; + } + + /** + * Retrieve allowed file extensions for log files + * + * @return string[] + */ + public static function getAlowedFileExtensions(): array + { + return explode( + ',', + (string) Mage::getConfig()->getNode( + self::XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS, + Mage_Core_Model_Store::DEFAULT_CODE, + ), + ); + } + + public static function getLogFile(): string + { + return (string) Mage::getConfig()->getNode( + self::XML_PATH_DEV_LOG_FILE, + Mage_Core_Model_Store::DEFAULT_CODE, + ); + } + + /** + * Retrieve maximum log level from configuration + */ + public static function getLogLevelMax(): int + { + try { + $maxLogLevel = Mage::getStoreConfigAsInt(self::XML_PATH_DEV_LOG_MAX_LEVEL); + } catch (Throwable) { + $maxLogLevel = Level::Debug->value; + } + + return self::getLogLevel($maxLogLevel); + } +} diff --git a/app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php b/app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php index f3b7a642a7b..0f83c7533e8 100644 --- a/app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php +++ b/app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php @@ -18,7 +18,7 @@ $select = $connection->select() ->from($table) - ->where('path = ?', Mage_Core_Helper_Data::XML_PATH_DEV_LOG_MAX_LEVEL); + ->where('path = ?', Mage_Core_Helper_Log::XML_PATH_DEV_LOG_MAX_LEVEL); $logConfig = $connection->fetchAll($select); @@ -40,7 +40,7 @@ [ 'scope' => $config['scope'], 'scope_id' => $config['scope_id'], - 'path' => Mage_Core_Helper_Data::XML_PATH_DEV_LOG_MAX_LEVEL, + 'path' => Mage_Core_Helper_Log::XML_PATH_DEV_LOG_MAX_LEVEL, 'value' => $monologValue, ], ['value'], From 518828f5aa075dcef50f91673e66d85ea44b5812 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 01:13:14 +0100 Subject: [PATCH 02/34] added unit tests --- tests/unit/Mage/Core/Helper/LogTest.php | 71 +++++++++++++++++++ .../Mage/Core/Helper/LogTrait.php | 61 ++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 tests/unit/Mage/Core/Helper/LogTest.php create mode 100644 tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php diff --git a/tests/unit/Mage/Core/Helper/LogTest.php b/tests/unit/Mage/Core/Helper/LogTest.php new file mode 100644 index 00000000000..06140013d60 --- /dev/null +++ b/tests/unit/Mage/Core/Helper/LogTest.php @@ -0,0 +1,71 @@ + [ + 100, + null, + ]; + yield 'empty string' => [ + 100, + '', + ]; + yield 'string' => [ + 100, + 'abc', + ]; + yield 'string psr3' => [ + 200, + 'info', + ]; + yield 'numeric string' => [ + 600, + '0', + ]; + yield 'numeric invalid string' => [ + 100, + '999', + ]; + yield 'int to 7' => [ + 600, + 0 + ]; + yield 'int to 100' => [ + 100, + 66, + ]; + yield 'int invalid' => [ + 100, + 999, + ]; + yield 'monolog level' => [ + 100, + Level::Debug, + ]; + } +} From eec7e168a275e9485b3bc160746d2ed5c2a06188 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 02:30:58 +0100 Subject: [PATCH 03/34] update --- app/Mage.php | 23 ++++---- app/code/core/Mage/Core/Helper/Log.php | 82 ++++++++++++++++++-------- 2 files changed, 70 insertions(+), 35 deletions(-) diff --git a/app/Mage.php b/app/Mage.php index b0a42c0d370..8d2e80ec393 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -7,8 +7,7 @@ * @package Mage */ -use Monolog\Formatter\LineFormatter; -use Monolog\Handler\StreamHandler; +use Monolog\Handler\FormattableHandlerInterface; use Monolog\Level; use Monolog\Logger; @@ -929,18 +928,20 @@ public static function log($message, $level = null, $file = '', $forceLog = fals chmod($logFile, 0640); } - $format = '%datetime% %level_name% (%level%): %message% %context% %extra%' . PHP_EOL; - $formatter = new LineFormatter($format, null, true, true, true); - $writerModel = (string) self::getConfig()->getNode('global/log/core/writer_model'); - if (!self::$_app || !$writerModel) { - $writer = new StreamHandler($logFile, Level::Debug); - } else { - $writer = new $writerModel($logFile, Level::Debug); + $handler = Mage_Core_Helper_Log::getHandler(self::$_app, $logFile); + + if ($handler instanceof FormattableHandlerInterface) { + $format = '%datetime% %level_name% (%level%): %message% %context% %extra%' . PHP_EOL; + $handler->setFormatter(Mage_Core_Helper_Log::getLineFormatter( + format: $format, + allowInlineLineBreaks: true, + ignoreEmptyContextAndExtra: true, + includeStacktraces: true, + )); } - $writer->setFormatter($formatter); $logger = new Logger('OpenMage'); - $logger->pushHandler($writer); + $logger->pushHandler($handler); $loggers[$file] = $logger; } diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 99a37113974..d848d035b2d 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -10,6 +10,10 @@ */ use Monolog\Level; +use Monolog\Formatter\FormatterInterface; +use Monolog\Formatter\LineFormatter; +use Monolog\Handler\HandlerInterface; +use Monolog\Handler\StreamHandler; /** * Core data helper @@ -30,6 +34,60 @@ class Mage_Core_Helper_Log extends Mage_Core_Helper_Abstract protected $_moduleName = 'Mage_Core'; + /** + * Retrieve allowed file extensions for log files + * + * @return string[] + */ + public static function getAlowedFileExtensions(): array + { + return explode( + ',', + (string) Mage::getConfig()->getNode( + self::XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS, + Mage_Core_Model_Store::DEFAULT_CODE, + ), + ); + } + + /** + * Retrieve log handler instance + */ + public static function getHandler(null|Mage_Core_Model_App $app, string $logFile, Level $logLevel = Level::Debug): HandlerInterface + { + $writerModel = (string) Mage::getConfig()->getNode('global/log/core/writer_model'); + if (!$app || !$writerModel) { + return new StreamHandler($logFile, $logLevel); + } else { + return new $writerModel($logFile, $logLevel); + } + } + + /** + * Retrieve line formatter instance + */ + public static function getLineFormatter( + ?string $format = null, + ?string $dateFormat = null, + bool $allowInlineLineBreaks = false, + bool $ignoreEmptyContextAndExtra = false, + bool $includeStacktraces = false, + ): FormatterInterface + { + return new LineFormatter($format, $dateFormat, $allowInlineLineBreaks, $ignoreEmptyContextAndExtra, $includeStacktraces); + } + + /** + * Retrieve log file name from configuration + */ + public static function getLogFile(): string + { + return (string) Mage::getConfig()->getNode( + self::XML_PATH_DEV_LOG_FILE, + Mage_Core_Model_Store::DEFAULT_CODE, + ); + } + /** * Normalize log level to Monolog Level integer value * @@ -71,30 +129,6 @@ public static function getLogLevel($level): int return $levelValue->value; } - /** - * Retrieve allowed file extensions for log files - * - * @return string[] - */ - public static function getAlowedFileExtensions(): array - { - return explode( - ',', - (string) Mage::getConfig()->getNode( - self::XML_PATH_DEV_LOG_ALLOWED_EXTENSIONS, - Mage_Core_Model_Store::DEFAULT_CODE, - ), - ); - } - - public static function getLogFile(): string - { - return (string) Mage::getConfig()->getNode( - self::XML_PATH_DEV_LOG_FILE, - Mage_Core_Model_Store::DEFAULT_CODE, - ); - } - /** * Retrieve maximum log level from configuration */ From 36cda5c7e6a9413395fb60258a5ea45fc5244440 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 02:31:45 +0100 Subject: [PATCH 04/34] update tests --- tests/unit/Mage/Core/Helper/LogTest.php | 22 +++++++++++++++++-- .../Mage/Core/Helper/LogTrait.php | 2 +- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/tests/unit/Mage/Core/Helper/LogTest.php b/tests/unit/Mage/Core/Helper/LogTest.php index 06140013d60..a3e69438e8e 100644 --- a/tests/unit/Mage/Core/Helper/LogTest.php +++ b/tests/unit/Mage/Core/Helper/LogTest.php @@ -13,6 +13,8 @@ use Mage; use Mage_Core_Helper_Log as Subject; +use Monolog\Formatter\LineFormatter; +use Monolog\Handler\StreamHandler; use Monolog\Level; use OpenMage\Tests\Unit\OpenMageTest; use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\Helper\LogTrait; @@ -21,8 +23,6 @@ final class LogTest extends OpenMageTest { use LogTrait; - public const TEST_URL = 'foo'; - // @phpstan-ignore property.onlyWritten private static Subject $subject; @@ -60,6 +60,24 @@ public function testGetLogFile(): void self::assertIsString(Subject::getLogFile()); } + /** + * @covers Mage_Core_Helper_Log::getHandler() + * @group Helper + */ + public function testGetHandler(): void + { + self::assertInstanceOf(StreamHandler::class, Subject::getHandler(null, 'somefile.log')); + } + + /** + * @covers Mage_Core_Helper_Log::getLineFormatter() + * @group Helper + */ + public function testGetLineFormatter(): void + { + self::assertInstanceOf(LineFormatter::class, Subject::getLineFormatter()); + } + /** * @covers Mage_Core_Helper_Log::getLogLevelMax() * @group Helper diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php index 3cca05bb740..c82e1a04a7e 100644 --- a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php @@ -43,7 +43,7 @@ public function provideGetLogLevelData(): Generator ]; yield 'int to 7' => [ 600, - 0 + 0, ]; yield 'int to 100' => [ 100, From 5682459eb488e404158e8ca06ca9501099b9c8ea Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 02:41:16 +0100 Subject: [PATCH 05/34] test comment --- tests/unit/Mage/Core/Helper/LogTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/Mage/Core/Helper/LogTest.php b/tests/unit/Mage/Core/Helper/LogTest.php index a3e69438e8e..ef43c7bbc28 100644 --- a/tests/unit/Mage/Core/Helper/LogTest.php +++ b/tests/unit/Mage/Core/Helper/LogTest.php @@ -35,6 +35,7 @@ public static function setUpBeforeClass(): void /** * @dataProvider provideGetLogLevelData * @covers Mage_Core_Helper_Log::getLogLevel() + * @covers Mage_Core_Helper_Log::getLogLevelMax() * @group Helper */ public function testGetLogLevel(int $expectedResult, null|int|Level|string $level): void From 8a3e5bc30cb5e6cced0c0b206b255abd92d702f3 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 03:10:38 +0100 Subject: [PATCH 06/34] phpcsfixer --- app/code/core/Mage/Core/Helper/Log.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index d848d035b2d..0722e5328ec 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -72,8 +72,7 @@ public static function getLineFormatter( bool $allowInlineLineBreaks = false, bool $ignoreEmptyContextAndExtra = false, bool $includeStacktraces = false, - ): FormatterInterface - { + ): FormatterInterface { return new LineFormatter($format, $dateFormat, $allowInlineLineBreaks, $ignoreEmptyContextAndExtra, $includeStacktraces); } From 4ac92b2bd86215af65f1508e7c49a9d41fe15fc9 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 03:27:41 +0100 Subject: [PATCH 07/34] Update app/code/core/Mage/Core/Helper/Log.php --- app/code/core/Mage/Core/Helper/Log.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 0722e5328ec..06ef5fe825f 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -136,7 +136,7 @@ public static function getLogLevelMax(): int try { $maxLogLevel = Mage::getStoreConfigAsInt(self::XML_PATH_DEV_LOG_MAX_LEVEL); } catch (Throwable) { - $maxLogLevel = Level::Debug->value; + $maxLogLevel = Level::Debug; } return self::getLogLevel($maxLogLevel); From 5fed3e08c77cebbb679cb8ae1c51bbba9d8fb853 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 04:26:23 +0100 Subject: [PATCH 08/34] update --- app/code/core/Mage/Core/Helper/Log.php | 33 +++++++++---------- .../Mage/Core/Helper/LogTrait.php | 20 +++++++---- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 0722e5328ec..ec00297b9f8 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -94,11 +94,15 @@ public static function getLogFile(): string */ public static function getLogLevel($level): int { + if (is_numeric($level)) { + $level = (int) $level; + } + if ($level instanceof Level) { $levelValue = $level; } elseif (is_null($level)) { $levelValue = Level::Debug; - } elseif (is_string($level) && !is_numeric($level)) { + } elseif (is_string($level)) { // PSR 3 Log level try { $levelValue = Level::fromName($level); @@ -106,23 +110,18 @@ public static function getLogLevel($level): int $levelValue = Level::Debug; // fallback to debug level } } else { - $levelValue = (int) $level; // change RFC 5424 Log Level into Monolog. - if ($levelValue >= 0 && $levelValue <= 7) { - $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, - }); - } else { - // unknown levels are treated as debug - $levelValue = Level::Debug; // fallback to debug level - } + $levelValue = (match ($level) { + 7, 100 => Level::Debug, + 6, 200 => Level::Info, + 5, 250 => Level::Notice, + 4, 300 => Level::Warning, + 3, 400 => Level::Error, + 2, 500 => Level::Critical, + 1, 550 => Level::Alert, + 0, 600 => Level::Emergency, + default => Level::Debug, + }); } return $levelValue->value; diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php index c82e1a04a7e..a04ff307edf 100644 --- a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php @@ -25,7 +25,7 @@ public function provideGetLogLevelData(): Generator 100, '', ]; - yield 'string' => [ + yield 'invalid string' => [ 100, 'abc', ]; @@ -33,23 +33,31 @@ public function provideGetLogLevelData(): Generator 200, 'info', ]; - yield 'numeric string' => [ + yield 'numeric string 7' => [ 600, '0', ]; - yield 'numeric invalid string' => [ + yield 'numeric string 200' => [ + 200, + '200', + ]; + yield 'numeric string 999' => [ 100, '999', ]; - yield 'int to 7' => [ + yield 'int 0' => [ 600, 0, ]; - yield 'int to 100' => [ + yield 'int 66' => [ 100, 66, ]; - yield 'int invalid' => [ + yield 'int 200' => [ + 200, + 200, + ]; + yield 'int 999' => [ 100, 999, ]; From 6b496860c8607f02401d91ea3fce65db4be48c3a Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 04:44:47 +0100 Subject: [PATCH 09/34] typo --- app/Mage.php | 2 +- app/code/core/Mage/Core/Helper/Log.php | 2 +- tests/unit/Mage/Core/Helper/LogTest.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Mage.php b/app/Mage.php index 8d2e80ec393..a6724a19356 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -910,7 +910,7 @@ public static function log($message, $level = null, $file = '', $forceLog = fals try { if (!isset($loggers[$file])) { // Validate file extension before save. Allowed file extensions: log, txt, html, csv - $_allowedFileExtensions = Mage_Core_Helper_Log::getAlowedFileExtensions(); + $_allowedFileExtensions = Mage_Core_Helper_Log::getAllowedFileExtensions(); if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { return; } diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index da28ca8699d..8f46a43a3f0 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -39,7 +39,7 @@ class Mage_Core_Helper_Log extends Mage_Core_Helper_Abstract * * @return string[] */ - public static function getAlowedFileExtensions(): array + public static function getAllowedFileExtensions(): array { return explode( ',', diff --git a/tests/unit/Mage/Core/Helper/LogTest.php b/tests/unit/Mage/Core/Helper/LogTest.php index ef43c7bbc28..c4877996420 100644 --- a/tests/unit/Mage/Core/Helper/LogTest.php +++ b/tests/unit/Mage/Core/Helper/LogTest.php @@ -44,12 +44,12 @@ public function testGetLogLevel(int $expectedResult, null|int|Level|string $leve } /** - * @covers Mage_Core_Helper_Log::getAlowedFileExtensions() + * @covers Mage_Core_Helper_Log::getAllowedFileExtensions() * @group Helper */ public function testGetAlowedFileExtensions(): void { - self::assertIsArray(Subject::getAlowedFileExtensions()); + self::assertIsArray(Subject::getAllowedFileExtensions()); } /** From 077f1134dbf216dfdbf8217956fb6d35ced307bc Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 04:47:49 +0100 Subject: [PATCH 10/34] typo --- tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php index a04ff307edf..c8c451cf5da 100644 --- a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php @@ -33,7 +33,7 @@ public function provideGetLogLevelData(): Generator 200, 'info', ]; - yield 'numeric string 7' => [ + yield 'numeric string 0' => [ 600, '0', ]; From 0d4d0d3e55e03c1490eabb44026ae090d0c0a24d Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 04:48:34 +0100 Subject: [PATCH 11/34] typo --- app/code/core/Mage/Core/Helper/Log.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 8f46a43a3f0..5545710c461 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -16,7 +16,7 @@ use Monolog\Handler\StreamHandler; /** - * Core data helper + * Core logging helper * * @package Mage_Core */ From 50ae57a918b2e5787ece8c033f74161e7d402679 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 08:44:21 +0100 Subject: [PATCH 12/34] types --- app/code/core/Mage/Core/Helper/Log.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 5545710c461..a3d01e31575 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -89,10 +89,8 @@ public static function getLogFile(): string /** * Normalize log level to Monolog Level integer value - * - * @param null|int|Level::*|string $level */ - public static function getLogLevel($level): int + public static function getLogLevel(null|int|Level|string $level): int { if (is_numeric($level)) { $level = (int) $level; From bb815a54619f040700ff0f056b45e5f86b172b7c Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 22:52:29 +0100 Subject: [PATCH 13/34] use RFC5424 levels for compatibility --- .../Model/System/Config/Source/Log/Level.php | 16 +++--- app/code/core/Mage/Core/Helper/Log.php | 4 +- .../core_setup/upgrade-1.6.0.10-1.6.0.11.php | 50 ------------------- 3 files changed, 10 insertions(+), 60 deletions(-) delete mode 100644 app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php diff --git a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php b/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php index ba1f32d82d1..7da94afc75c 100644 --- a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php +++ b/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php @@ -21,14 +21,14 @@ public function toOptionArray() $helper = Mage::helper('adminhtml'); return [ - Level::Emergency->value => $helper->__('Emergency'), - Level::Alert->value => $helper->__('Alert'), - Level::Critical->value => $helper->__('Critical'), - Level::Error->value => $helper->__('Error'), - Level::Warning->value => $helper->__('Warning'), - Level::Notice->value => $helper->__('Notice'), - Level::Info->value => $helper->__('Informational'), - Level::Debug->value => $helper->__('Debug'), + Level::Emergency->toRFC5424Level() => $helper->__('Emergency'), + Level::Alert->toRFC5424Level() => $helper->__('Alert'), + Level::Critical->toRFC5424Level() => $helper->__('Critical'), + Level::Error->toRFC5424Level() => $helper->__('Error'), + Level::Warning->toRFC5424Level() => $helper->__('Warning'), + Level::Notice->toRFC5424Level() => $helper->__('Notice'), + Level::Info->toRFC5424Level() => $helper->__('Informational'), + Level::Debug->toRFC5424Level() => $helper->__('Debug'), ]; } } diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index a3d01e31575..f598f494173 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -108,7 +108,7 @@ public static function getLogLevel(null|int|Level|string $level): int $levelValue = Level::Debug; // fallback to debug level } } else { - // change RFC 5424 Log Level into Monolog. + // change Monolog into RFC 5424 Log Level $levelValue = (match ($level) { 7, 100 => Level::Debug, 6, 200 => Level::Info, @@ -122,7 +122,7 @@ public static function getLogLevel(null|int|Level|string $level): int }); } - return $levelValue->value; + return $levelValue->toRFC5424Level(); } /** diff --git a/app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php b/app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php deleted file mode 100644 index 0f83c7533e8..00000000000 --- a/app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php +++ /dev/null @@ -1,50 +0,0 @@ -startSetup(); - -$connection = $installer->getConnection(); -$table = $installer->getTable('core/config_data'); - -$select = $connection->select() - ->from($table) - ->where('path = ?', Mage_Core_Helper_Log::XML_PATH_DEV_LOG_MAX_LEVEL); - -$logConfig = $connection->fetchAll($select); - -foreach ($logConfig as $config) { - $zendValue = (int) $config['value']; - $monologValue = match ($zendValue) { - 0 => Level::Emergency->value, - 1 => Level::Alert->value, - 2 => Level::Critical->value, - 3 => Level::Error->value, - 4 => Level::Warning->value, - 5 => Level::Notice->value, - 6 => Level::Info->value, - default => Level::Debug->value, - }; - - $connection->insertOnDuplicate( - $table, - [ - 'scope' => $config['scope'], - 'scope_id' => $config['scope_id'], - 'path' => Mage_Core_Helper_Log::XML_PATH_DEV_LOG_MAX_LEVEL, - 'value' => $monologValue, - ], - ['value'], - ); -} - -$installer->endSetup(); From 110963b9e71221c9ea311f486241787c4d58934c Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Fri, 12 Dec 2025 22:57:31 +0100 Subject: [PATCH 14/34] tests --- .../Mage/Core/Helper/LogTrait.php | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php index c8c451cf5da..cc0678745fe 100644 --- a/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php +++ b/tests/unit/Traits/DataProvider/Mage/Core/Helper/LogTrait.php @@ -18,51 +18,51 @@ trait LogTrait public function provideGetLogLevelData(): Generator { yield 'null' => [ - 100, + Level::Debug->toRFC5424Level(), null, ]; yield 'empty string' => [ - 100, + Level::Debug->toRFC5424Level(), '', ]; yield 'invalid string' => [ - 100, + Level::Debug->toRFC5424Level(), 'abc', ]; yield 'string psr3' => [ - 200, + Level::Info->toRFC5424Level(), 'info', ]; yield 'numeric string 0' => [ - 600, + Level::Emergency->toRFC5424Level(), '0', ]; yield 'numeric string 200' => [ - 200, + Level::Info->toRFC5424Level(), '200', ]; yield 'numeric string 999' => [ - 100, + Level::Debug->toRFC5424Level(), '999', ]; yield 'int 0' => [ - 600, + Level::Emergency->toRFC5424Level(), 0, ]; yield 'int 66' => [ - 100, + Level::Debug->toRFC5424Level(), 66, ]; yield 'int 200' => [ - 200, + Level::Info->toRFC5424Level(), 200, ]; yield 'int 999' => [ - 100, + Level::Debug->toRFC5424Level(), 999, ]; yield 'monolog level' => [ - 100, + Level::Debug->toRFC5424Level(), Level::Debug, ]; } From ec1080262d01bf94ecf66b3472e3690c35646f19 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 03:40:34 +0100 Subject: [PATCH 15/34] minor --- app/Mage.php | 11 ----------- app/code/core/Mage/Core/Helper/Log.php | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/Mage.php b/app/Mage.php index a6724a19356..f0f631a6557 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -7,7 +7,6 @@ * @package Mage */ -use Monolog\Handler\FormattableHandlerInterface; use Monolog\Level; use Monolog\Logger; @@ -930,16 +929,6 @@ public static function log($message, $level = null, $file = '', $forceLog = fals $handler = Mage_Core_Helper_Log::getHandler(self::$_app, $logFile); - if ($handler instanceof FormattableHandlerInterface) { - $format = '%datetime% %level_name% (%level%): %message% %context% %extra%' . PHP_EOL; - $handler->setFormatter(Mage_Core_Helper_Log::getLineFormatter( - format: $format, - allowInlineLineBreaks: true, - ignoreEmptyContextAndExtra: true, - includeStacktraces: true, - )); - } - $logger = new Logger('OpenMage'); $logger->pushHandler($handler); $loggers[$file] = $logger; diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index f598f494173..2453e573cfb 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -12,6 +12,7 @@ use Monolog\Level; use Monolog\Formatter\FormatterInterface; use Monolog\Formatter\LineFormatter; +use Monolog\Handler\FormattableHandlerInterface; use Monolog\Handler\HandlerInterface; use Monolog\Handler\StreamHandler; @@ -57,10 +58,22 @@ public static function getHandler(null|Mage_Core_Model_App $app, string $logFile { $writerModel = (string) Mage::getConfig()->getNode('global/log/core/writer_model'); if (!$app || !$writerModel) { - return new StreamHandler($logFile, $logLevel); + $handler = new StreamHandler($logFile, $logLevel); } else { - return new $writerModel($logFile, $logLevel); + $handler = new $writerModel($logFile, $logLevel); } + + if ($handler instanceof FormattableHandlerInterface) { + $format = '%datetime% %level_name% (%level%): %message% %context% %extra%' . PHP_EOL; + $handler->setFormatter(Mage_Core_Helper_Log::getLineFormatter( + format: $format, + allowInlineLineBreaks: true, + ignoreEmptyContextAndExtra: true, + includeStacktraces: true, + )); + } + + return $handler; } /** From c725ec4bd86fb82424e382686f499dfb5946f890 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 03:56:59 +0100 Subject: [PATCH 16/34] to model --- app/Mage.php | 64 ++---------------------- app/code/core/Mage/Core/Model/Logger.php | 62 ++++++++++++++++++++++- 2 files changed, 66 insertions(+), 60 deletions(-) diff --git a/app/Mage.php b/app/Mage.php index f0f631a6557..c0f63efc98e 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -8,7 +8,6 @@ */ use Monolog\Level; -use Monolog\Logger; defined('DS') || define('DS', DIRECTORY_SEPARATOR); defined('PS') || define('PS', PATH_SEPARATOR); @@ -883,63 +882,10 @@ public static function log($message, $level = null, $file = '', $forceLog = fals } try { - $logActive = self::getStoreConfigFlag(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ENABLED); - if (empty($file)) { - $file = self::getStoreConfig(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_FILE); + $logger = self::getModel('core/logger'); + if ($logger instanceof Mage_Core_Model_Logger) { + $logger->log($message, $level, $file, $forceLog, $context); } - } catch (Exception) { - $logActive = true; - } - - if (!self::$_isDeveloperMode && !$logActive && !$forceLog) { - return; - } - - static $loggers = []; - - $maxLogLevel = Mage_Core_Helper_Log::getLogLevelMax(); - $levelValue = Mage_Core_Helper_Log::getLogLevel($level); - - if (!self::$_isDeveloperMode && $levelValue > $maxLogLevel && !$forceLog) { - return; - } - - $file = empty($file) ? Mage_Core_Helper_Log::getLogFile() : basename($file); - - try { - if (!isset($loggers[$file])) { - // Validate file extension before save. Allowed file extensions: log, txt, html, csv - $_allowedFileExtensions = Mage_Core_Helper_Log::getAllowedFileExtensions(); - if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { - return; - } - - $logDir = self::getBaseDir('var') . DS . 'log'; - $logFile = $logDir . DS . $file; - - if (!is_dir($logDir)) { - mkdir($logDir); - chmod($logDir, 0750); - } - - if (!file_exists($logFile)) { - file_put_contents($logFile, ''); - chmod($logFile, 0640); - } - - $handler = Mage_Core_Helper_Log::getHandler(self::$_app, $logFile); - - $logger = new Logger('OpenMage'); - $logger->pushHandler($handler); - $loggers[$file] = $logger; - } - - if (is_array($message) || is_object($message)) { - $message = print_r($message, true); - } - - $message = addcslashes($message, 'log($levelValue, $message, $context); } catch (Exception) { } } @@ -947,14 +893,14 @@ public static function log($message, $level = null, $file = '', $forceLog = fals /** * Write exception to log */ - public static function logException(Throwable $e) + public static function logException(Throwable $throwable) { if (!self::getConfig()) { return; } $file = self::getStoreConfig(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_EXCEPTION_FILE); - self::log("\n" . $e->__toString(), Level::Error, $file); + self::log("\n" . $throwable->__toString(), Level::Error, $file); } /** diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index 1c1d2a691aa..6fa16aae171 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -8,6 +8,7 @@ */ use Monolog\Level; +use Monolog\Logger; /** * Logger model @@ -27,7 +28,66 @@ class Mage_Core_Model_Logger */ public function log($message, $level = null, $file = '', $forceLog = false, array $context = []) { - Mage::log($message, $level, $file, $forceLog, $context); + try { + $logActive = Mage::getStoreConfigFlag(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ENABLED); + if (empty($file)) { + $file = Mage::getStoreConfig(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_FILE); + } + } catch (Exception) { + $logActive = true; + } + + if (!Mage::getIsDeveloperMode() && !$logActive && !$forceLog) { + return; + } + + static $loggers = []; + + $maxLogLevel = Mage_Core_Helper_Log::getLogLevelMax(); + $levelValue = Mage_Core_Helper_Log::getLogLevel($level); + + if (!Mage::getIsDeveloperMode() && $levelValue > $maxLogLevel && !$forceLog) { + return; + } + + $file = empty($file) ? Mage_Core_Helper_Log::getLogFile() : basename($file); + + try { + if (!isset($loggers[$file])) { + // Validate file extension before save. Allowed file extensions: log, txt, html, csv + $_allowedFileExtensions = Mage_Core_Helper_Log::getAllowedFileExtensions(); + if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { + return; + } + + $logDir = Mage::getBaseDir('var') . DS . 'log'; + $logFile = $logDir . DS . $file; + + if (!is_dir($logDir)) { + mkdir($logDir); + chmod($logDir, 0750); + } + + if (!file_exists($logFile)) { + file_put_contents($logFile, ''); + chmod($logFile, 0640); + } + + $handler = Mage_Core_Helper_Log::getHandler(Mage::app(), $logFile); + + $logger = new Logger('OpenMage'); + $logger->pushHandler($handler); + $loggers[$file] = $logger; + } + + if (is_array($message) || is_object($message)) { + $message = print_r($message, true); + } + + $message = addcslashes($message, 'log($levelValue, $message, $context); + } catch (Exception) { + } } /** From 02dfbeb6af5e4086c11b560b8528f03de04846ff Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 04:07:04 +0100 Subject: [PATCH 17/34] minor static prop --- app/code/core/Mage/Core/Model/Logger.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index 6fa16aae171..0c2695b9cbd 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -17,6 +17,12 @@ */ class Mage_Core_Model_Logger { + /** Loggers storage + * + * @var Logger[] + */ + private static array $loggers = []; + /** * Log wrapper * @@ -33,7 +39,7 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra if (empty($file)) { $file = Mage::getStoreConfig(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_FILE); } - } catch (Exception) { + } catch (Throwable) { $logActive = true; } @@ -41,8 +47,6 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra return; } - static $loggers = []; - $maxLogLevel = Mage_Core_Helper_Log::getLogLevelMax(); $levelValue = Mage_Core_Helper_Log::getLogLevel($level); @@ -53,7 +57,7 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra $file = empty($file) ? Mage_Core_Helper_Log::getLogFile() : basename($file); try { - if (!isset($loggers[$file])) { + if (!isset(self::$loggers[$file])) { // Validate file extension before save. Allowed file extensions: log, txt, html, csv $_allowedFileExtensions = Mage_Core_Helper_Log::getAllowedFileExtensions(); if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { @@ -77,7 +81,7 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra $logger = new Logger('OpenMage'); $logger->pushHandler($handler); - $loggers[$file] = $logger; + self::$loggers[$file] = $logger; } if (is_array($message) || is_object($message)) { @@ -85,7 +89,7 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra } $message = addcslashes($message, 'log($levelValue, $message, $context); + self::$loggers[$file]->log($levelValue, $message, $context); } catch (Exception) { } } @@ -93,8 +97,8 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra /** * Log exception wrapper */ - public function logException(Exception $e) + public function logException(Exception $exception) { - Mage::logException($e); + Mage::logException($exception); } } From 6dab7f245b6337fde27e53c71eef14549c63b533 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 04:10:29 +0100 Subject: [PATCH 18/34] minor --- app/code/core/Mage/Core/Model/Logger.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index 0c2695b9cbd..848de0843ac 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -7,6 +7,7 @@ * @package Mage_Core */ +use Mage_Core_Helper_Log as HelperLog; use Monolog\Level; use Monolog\Logger; @@ -35,9 +36,9 @@ class Mage_Core_Model_Logger public function log($message, $level = null, $file = '', $forceLog = false, array $context = []) { try { - $logActive = Mage::getStoreConfigFlag(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_ENABLED); + $logActive = Mage::getStoreConfigFlag(HelperLog::XML_PATH_DEV_LOG_ENABLED); if (empty($file)) { - $file = Mage::getStoreConfig(Mage_Core_Helper_Log::XML_PATH_DEV_LOG_FILE); + $file = Mage::getStoreConfig(HelperLog::XML_PATH_DEV_LOG_FILE); } } catch (Throwable) { $logActive = true; @@ -47,19 +48,18 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra return; } - $maxLogLevel = Mage_Core_Helper_Log::getLogLevelMax(); - $levelValue = Mage_Core_Helper_Log::getLogLevel($level); + $levelValue = HelperLog::getLogLevel($level); - if (!Mage::getIsDeveloperMode() && $levelValue > $maxLogLevel && !$forceLog) { + if (!Mage::getIsDeveloperMode() && $levelValue > HelperLog::getLogLevelMax() && !$forceLog) { return; } - $file = empty($file) ? Mage_Core_Helper_Log::getLogFile() : basename($file); + $file = empty($file) ? HelperLog::getLogFile() : basename($file); try { if (!isset(self::$loggers[$file])) { // Validate file extension before save. Allowed file extensions: log, txt, html, csv - $_allowedFileExtensions = Mage_Core_Helper_Log::getAllowedFileExtensions(); + $_allowedFileExtensions = HelperLog::getAllowedFileExtensions(); if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { return; } @@ -77,7 +77,7 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra chmod($logFile, 0640); } - $handler = Mage_Core_Helper_Log::getHandler(Mage::app(), $logFile); + $handler = HelperLog::getHandler(Mage::app(), $logFile); $logger = new Logger('OpenMage'); $logger->pushHandler($handler); From 0aeda82027cd6d0e4d594a622ab422ac4720f705 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 04:15:14 +0100 Subject: [PATCH 19/34] minor --- app/code/core/Mage/Core/Model/Logger.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index 848de0843ac..815ed356d15 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -35,6 +35,10 @@ class Mage_Core_Model_Logger */ public function log($message, $level = null, $file = '', $forceLog = false, array $context = []) { + if ((bool) $forceLog !== true) { + $forceLog = Mage::getIsDeveloperMode(); + } + try { $logActive = Mage::getStoreConfigFlag(HelperLog::XML_PATH_DEV_LOG_ENABLED); if (empty($file)) { @@ -44,13 +48,13 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra $logActive = true; } - if (!Mage::getIsDeveloperMode() && !$logActive && !$forceLog) { + if (!$logActive && !$forceLog) { return; } $levelValue = HelperLog::getLogLevel($level); - if (!Mage::getIsDeveloperMode() && $levelValue > HelperLog::getLogLevelMax() && !$forceLog) { + if ($levelValue > HelperLog::getLogLevelMax() && !$forceLog) { return; } From 69f282b60fd4eec4621dcd95d6ef29fc36e525e7 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 04:40:34 +0100 Subject: [PATCH 20/34] minor --- .../Model/System/Config/Source/Log/Level.php | 17 ++++---- app/code/core/Mage/Core/Helper/Log.php | 42 ++++++++++++++----- app/code/core/Mage/Core/Model/Logger.php | 8 ++-- 3 files changed, 44 insertions(+), 23 deletions(-) diff --git a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php b/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php index 7da94afc75c..77e2a54ab84 100644 --- a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php +++ b/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Log/Level.php @@ -7,6 +7,7 @@ * @package Mage_Adminhtml */ +use Mage_Core_Helper_Log as Log; use Monolog\Level; /** @@ -21,14 +22,14 @@ public function toOptionArray() $helper = Mage::helper('adminhtml'); return [ - Level::Emergency->toRFC5424Level() => $helper->__('Emergency'), - Level::Alert->toRFC5424Level() => $helper->__('Alert'), - Level::Critical->toRFC5424Level() => $helper->__('Critical'), - Level::Error->toRFC5424Level() => $helper->__('Error'), - Level::Warning->toRFC5424Level() => $helper->__('Warning'), - Level::Notice->toRFC5424Level() => $helper->__('Notice'), - Level::Info->toRFC5424Level() => $helper->__('Informational'), - Level::Debug->toRFC5424Level() => $helper->__('Debug'), + Log::getLogLevelValue(Level::Emergency) => $helper->__('Emergency'), + Log::getLogLevelValue(Level::Alert) => $helper->__('Alert'), + Log::getLogLevelValue(Level::Critical) => $helper->__('Critical'), + Log::getLogLevelValue(Level::Error) => $helper->__('Error'), + Log::getLogLevelValue(Level::Warning) => $helper->__('Warning'), + Log::getLogLevelValue(Level::Notice) => $helper->__('Notice'), + Log::getLogLevelValue(Level::Info) => $helper->__('Informational'), + Log::getLogLevelValue(Level::Debug) => $helper->__('Debug'), ]; } } diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 2453e573cfb..e5ec7c68715 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -33,6 +33,12 @@ class Mage_Core_Helper_Log extends Mage_Core_Helper_Abstract public const XML_PATH_DEV_LOG_MAX_LEVEL = 'dev/log/max_level'; + public const LOG_FORMAT_MONOLOG = 1; + + public const LOG_FORMAT_RFC5424 = 2; + + public const LOG_FORMAT_PSR_3 = 3; + protected $_moduleName = 'Mage_Core'; /** @@ -40,7 +46,7 @@ class Mage_Core_Helper_Log extends Mage_Core_Helper_Abstract * * @return string[] */ - public static function getAllowedFileExtensions(): array + public static function getConfigAllowedFileExtensions(): array { return explode( ',', @@ -51,6 +57,17 @@ public static function getAllowedFileExtensions(): array ); } + /** + * Retrieve log file name from configuration + */ + public static function getConfigLogFile(): string + { + return (string) Mage::getConfig()->getNode( + self::XML_PATH_DEV_LOG_FILE, + Mage_Core_Model_Store::DEFAULT_CODE, + ); + } + /** * Retrieve log handler instance */ @@ -90,20 +107,23 @@ public static function getLineFormatter( } /** - * Retrieve log file name from configuration + * Retrieve log level value + * + * @param self::LOG_FORMAT_* $format */ - public static function getLogFile(): string + public static function getLogLevelValue(null|int|Level|string $level, int $format = self::LOG_FORMAT_RFC5424): int|string { - return (string) Mage::getConfig()->getNode( - self::XML_PATH_DEV_LOG_FILE, - Mage_Core_Model_Store::DEFAULT_CODE, - ); + return match ($format) { + self::LOG_FORMAT_MONOLOG => self::getLogLevel($level)->value, + self::LOG_FORMAT_PSR_3 => self::getLogLevel($level)->toPsrLogLevel(), + self::LOG_FORMAT_RFC5424 => self::getLogLevel($level)->toRFC5424Level(), + }; } /** * Normalize log level to Monolog Level integer value */ - public static function getLogLevel(null|int|Level|string $level): int + public static function getLogLevel(null|int|Level|string $level): Level { if (is_numeric($level)) { $level = (int) $level; @@ -135,13 +155,13 @@ public static function getLogLevel(null|int|Level|string $level): int }); } - return $levelValue->toRFC5424Level(); + return $levelValue; } /** * Retrieve maximum log level from configuration */ - public static function getLogLevelMax(): int + public static function getLogLevelMaxValue(): int { try { $maxLogLevel = Mage::getStoreConfigAsInt(self::XML_PATH_DEV_LOG_MAX_LEVEL); @@ -149,6 +169,6 @@ public static function getLogLevelMax(): int $maxLogLevel = Level::Debug; } - return self::getLogLevel($maxLogLevel); + return self::getLogLevelValue($maxLogLevel); } } diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index 815ed356d15..822608847c8 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -52,18 +52,18 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra return; } - $levelValue = HelperLog::getLogLevel($level); + $levelValue = HelperLog::getLogLevelValue($level); - if ($levelValue > HelperLog::getLogLevelMax() && !$forceLog) { + if ($levelValue > HelperLog::getLogLevelMaxValue() && !$forceLog) { return; } - $file = empty($file) ? HelperLog::getLogFile() : basename($file); + $file = empty($file) ? HelperLog::getConfigLogFile() : basename($file); try { if (!isset(self::$loggers[$file])) { // Validate file extension before save. Allowed file extensions: log, txt, html, csv - $_allowedFileExtensions = HelperLog::getAllowedFileExtensions(); + $_allowedFileExtensions = HelperLog::getConfigAllowedFileExtensions(); if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { return; } From 1536dda34a7805f82e000b329cadb4bfbb49803d Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 04:54:16 +0100 Subject: [PATCH 21/34] phpstdout --- app/code/core/Mage/Core/Model/Logger.php | 53 ++++++++++++++++-------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index 822608847c8..af3c20c6527 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -35,6 +35,8 @@ class Mage_Core_Model_Logger */ public function log($message, $level = null, $file = '', $forceLog = false, array $context = []) { + $useStdout = in_array($file, ['php://stdout', 'php://stderr'], true); + if ((bool) $forceLog !== true) { $forceLog = Mage::getIsDeveloperMode(); } @@ -62,23 +64,13 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra try { if (!isset(self::$loggers[$file])) { - // Validate file extension before save. Allowed file extensions: log, txt, html, csv - $_allowedFileExtensions = HelperLog::getConfigAllowedFileExtensions(); - if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { - return; - } - - $logDir = Mage::getBaseDir('var') . DS . 'log'; - $logFile = $logDir . DS . $file; - - if (!is_dir($logDir)) { - mkdir($logDir); - chmod($logDir, 0750); - } - - if (!file_exists($logFile)) { - file_put_contents($logFile, ''); - chmod($logFile, 0640); + if ($useStdout) { + $logFile = $file; + } else { + $logFile = $this->getLogFilePath($file); + if ($logFile === null) { + return; + } } $handler = HelperLog::getHandler(Mage::app(), $logFile); @@ -105,4 +97,31 @@ public function logException(Exception $exception) { Mage::logException($exception); } + + /** + * Get log file path + */ + protected function getLogFilePath(string $file): ?string + { + // Validate file extension before save. Allowed file extensions: log, txt, html, csv + $_allowedFileExtensions = HelperLog::getConfigAllowedFileExtensions(); + if (! ($extension = pathinfo($file, PATHINFO_EXTENSION)) || ! in_array($extension, $_allowedFileExtensions)) { + return null; + } + + $logDir = Mage::getBaseDir('var') . DS . 'log'; + $logFile = $logDir . DS . $file; + + if (!is_dir($logDir)) { + mkdir($logDir); + chmod($logDir, 0750); + } + + if (!file_exists($logFile)) { + file_put_contents($logFile, ''); + chmod($logFile, 0640); + } + + return $logFile; + } } From aa547e926a54350996ac49b7f2d626a950c1f79e Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 04:55:43 +0100 Subject: [PATCH 22/34] minor --- app/code/core/Mage/Core/Helper/Log.php | 4 ++-- app/code/core/Mage/Core/Model/Logger.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index e5ec7c68715..d38d436d3f5 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -71,10 +71,10 @@ public static function getConfigLogFile(): string /** * Retrieve log handler instance */ - public static function getHandler(null|Mage_Core_Model_App $app, string $logFile, Level $logLevel = Level::Debug): HandlerInterface + public static function getHandler(string $logFile, Level $logLevel = Level::Debug): HandlerInterface { $writerModel = (string) Mage::getConfig()->getNode('global/log/core/writer_model'); - if (!$app || !$writerModel) { + if (!Mage::app() || !$writerModel) { $handler = new StreamHandler($logFile, $logLevel); } else { $handler = new $writerModel($logFile, $logLevel); diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index af3c20c6527..e12723a1ab1 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -73,7 +73,7 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra } } - $handler = HelperLog::getHandler(Mage::app(), $logFile); + $handler = HelperLog::getHandler($logFile); $logger = new Logger('OpenMage'); $logger->pushHandler($handler); From c7d0209f4b8b819b8f94cd28b58f9bae71ce86f8 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:00:20 +0100 Subject: [PATCH 23/34] minor --- app/code/core/Mage/Core/Helper/Log.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index d38d436d3f5..a28e46782f3 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -103,7 +103,13 @@ public static function getLineFormatter( bool $ignoreEmptyContextAndExtra = false, bool $includeStacktraces = false, ): FormatterInterface { - return new LineFormatter($format, $dateFormat, $allowInlineLineBreaks, $ignoreEmptyContextAndExtra, $includeStacktraces); + return new LineFormatter( + format: $format, + dateFormat: $dateFormat, + allowInlineLineBreaks: $allowInlineLineBreaks, + ignoreEmptyContextAndExtra: $ignoreEmptyContextAndExtra, + includeStacktraces: $includeStacktraces, + ); } /** From 8acb9fc940a1e39237ac4de397fd32cb20dbbf21 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:03:37 +0100 Subject: [PATCH 24/34] test --- tests/unit/Mage/Core/Helper/LogTest.php | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/unit/Mage/Core/Helper/LogTest.php b/tests/unit/Mage/Core/Helper/LogTest.php index c4877996420..6192f06d9b5 100644 --- a/tests/unit/Mage/Core/Helper/LogTest.php +++ b/tests/unit/Mage/Core/Helper/LogTest.php @@ -34,31 +34,31 @@ public static function setUpBeforeClass(): void /** * @dataProvider provideGetLogLevelData - * @covers Mage_Core_Helper_Log::getLogLevel() - * @covers Mage_Core_Helper_Log::getLogLevelMax() + * @covers Mage_Core_Helper_Log::getLogLevelValue() + * @covers Mage_Core_Helper_Log::getLogLevelMaxValue() * @group Helper */ - public function testGetLogLevel(int $expectedResult, null|int|Level|string $level): void + public function testGetLogLevelValue(int $expectedResult, null|int|Level|string $level): void { - self::assertSame($expectedResult, Subject::getLogLevel($level)); + self::assertSame($expectedResult, Subject::getLogLevelValue($level)); } /** - * @covers Mage_Core_Helper_Log::getAllowedFileExtensions() + * @covers Mage_Core_Helper_Log::getConfigAllowedFileExtensions() * @group Helper */ - public function testGetAlowedFileExtensions(): void + public function testGetConfigAlowedFileExtensions(): void { - self::assertIsArray(Subject::getAllowedFileExtensions()); + self::assertIsArray(Subject::getConfigAllowedFileExtensions()); } /** - * @covers Mage_Core_Helper_Log::getLogFile() + * @covers Mage_Core_Helper_Log::getConfigLogFile() * @group Helper */ - public function testGetLogFile(): void + public function testGetConfigLogFile(): void { - self::assertIsString(Subject::getLogFile()); + self::assertIsString(Subject::getConfigLogFile()); } /** @@ -67,7 +67,7 @@ public function testGetLogFile(): void */ public function testGetHandler(): void { - self::assertInstanceOf(StreamHandler::class, Subject::getHandler(null, 'somefile.log')); + self::assertInstanceOf(StreamHandler::class, Subject::getHandler('somefile.log')); } /** @@ -83,8 +83,8 @@ public function testGetLineFormatter(): void * @covers Mage_Core_Helper_Log::getLogLevelMax() * @group Helper */ - public function testGetLogLevelMax(): void + public function testGetLogLevelMaxValue(): void { - self::assertIsInt(Subject::getLogLevelMax()); + self::assertIsInt(Subject::getLogLevelMaxValue()); } } From b1d493e6ab556594ab75d0ce5568be033bd575d7 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:32:04 +0100 Subject: [PATCH 25/34] minor --- app/code/core/Mage/Core/Helper/Log.php | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index a28e46782f3..40edb7838c7 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -131,24 +131,28 @@ public static function getLogLevelValue(null|int|Level|string $level, int $forma */ public static function getLogLevel(null|int|Level|string $level): Level { + if (is_null($level)) { + return Level::Debug; + } + + if ($level instanceof Level) { + return $level; + } + if (is_numeric($level)) { $level = (int) $level; } - if ($level instanceof Level) { - $levelValue = $level; - } elseif (is_null($level)) { - $levelValue = Level::Debug; - } elseif (is_string($level)) { + if (is_string($level)) { // PSR 3 Log level try { - $levelValue = Level::fromName($level); + return Level::fromName($level); } catch (UnhandledMatchError) { - $levelValue = Level::Debug; // fallback to debug level + return Level::Debug; // fallback to debug level } } else { // change Monolog into RFC 5424 Log Level - $levelValue = (match ($level) { + return (match ($level) { 7, 100 => Level::Debug, 6, 200 => Level::Info, 5, 250 => Level::Notice, @@ -160,9 +164,7 @@ public static function getLogLevel(null|int|Level|string $level): Level default => Level::Debug, }); } - - return $levelValue; - } + } /** * Retrieve maximum log level from configuration From 8f9722461ecea7ce90517d8346980e207d3dbddc Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:33:13 +0100 Subject: [PATCH 26/34] minor --- app/code/core/Mage/Core/Helper/Log.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 40edb7838c7..f9d869b503b 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -148,7 +148,7 @@ public static function getLogLevel(null|int|Level|string $level): Level try { return Level::fromName($level); } catch (UnhandledMatchError) { - return Level::Debug; // fallback to debug level + return Level::Debug; } } else { // change Monolog into RFC 5424 Log Level From 7d15078998bcf503b955bb7d5d3061fba3919d52 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:36:15 +0100 Subject: [PATCH 27/34] cs --- app/code/core/Mage/Core/Helper/Log.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index f9d869b503b..5cb25ba9061 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -164,7 +164,7 @@ public static function getLogLevel(null|int|Level|string $level): Level default => Level::Debug, }); } - } + } /** * Retrieve maximum log level from configuration From 7fdb7066caabf9816c57e6b02e9a842478079181 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:42:38 +0100 Subject: [PATCH 28/34] phpmd --- app/code/core/Mage/Core/Model/Logger.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index e12723a1ab1..3ebdf3183f5 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -32,6 +32,7 @@ class Mage_Core_Model_Logger * @param string $file * @param bool $forceLog * @param array $context additional context for the log entry + * @SuppressWarnings("PHPMD.DevelopmentCodeFragment") */ public function log($message, $level = null, $file = '', $forceLog = false, array $context = []) { @@ -87,6 +88,7 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra $message = addcslashes($message, 'log($levelValue, $message, $context); } catch (Exception) { + // Silent catch } } From d020887d210f9040840bd8d157807a3820e4e6ee Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:46:06 +0100 Subject: [PATCH 29/34] minor --- app/code/core/Mage/Core/Helper/Log.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 5cb25ba9061..e9608724d0e 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -151,7 +151,6 @@ public static function getLogLevel(null|int|Level|string $level): Level return Level::Debug; } } else { - // change Monolog into RFC 5424 Log Level return (match ($level) { 7, 100 => Level::Debug, 6, 200 => Level::Info, From 250c855d10930ccc930707c1ca41e4d1ab12ad46 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 05:57:42 +0100 Subject: [PATCH 30/34] minor --- app/code/core/Mage/Core/Helper/Log.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index e9608724d0e..dfc7c9da562 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -82,7 +82,7 @@ public static function getHandler(string $logFile, Level $logLevel = Level::Debu if ($handler instanceof FormattableHandlerInterface) { $format = '%datetime% %level_name% (%level%): %message% %context% %extra%' . PHP_EOL; - $handler->setFormatter(Mage_Core_Helper_Log::getLineFormatter( + $handler->setFormatter(self::getLineFormatter( format: $format, allowInlineLineBreaks: true, ignoreEmptyContextAndExtra: true, From 4b323f82f7cf8127cc7e3db43e1817298dbebaea Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sat, 20 Dec 2025 06:01:34 +0100 Subject: [PATCH 31/34] minor [skip ci] --- app/code/core/Mage/Core/Helper/Log.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index dfc7c9da562..55c74f75371 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -127,7 +127,7 @@ public static function getLogLevelValue(null|int|Level|string $level, int $forma } /** - * Normalize log level to Monolog Level integer value + * Retrieve log level instance */ public static function getLogLevel(null|int|Level|string $level): Level { From 5314946ff7df98cc1b7f6c818bd0250e9fe1b8d7 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Mon, 22 Dec 2025 03:44:20 +0100 Subject: [PATCH 32/34] Update app/code/core/Mage/Core/Model/Logger.php --- app/code/core/Mage/Core/Model/Logger.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/Model/Logger.php b/app/code/core/Mage/Core/Model/Logger.php index 3ebdf3183f5..d232491a378 100644 --- a/app/code/core/Mage/Core/Model/Logger.php +++ b/app/code/core/Mage/Core/Model/Logger.php @@ -61,7 +61,9 @@ public function log($message, $level = null, $file = '', $forceLog = false, arra return; } - $file = empty($file) ? HelperLog::getConfigLogFile() : basename($file); + if (!$useStdout) { + $file = empty($file) ? HelperLog::getConfigLogFile() : basename($file); + } try { if (!isset(self::$loggers[$file])) { From 9c4c44d966f60f853afd9067bddd05756f36f566 Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Mon, 22 Dec 2025 04:12:45 +0100 Subject: [PATCH 33/34] sonar --- app/code/core/Mage/Core/Helper/Log.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/core/Mage/Core/Helper/Log.php b/app/code/core/Mage/Core/Helper/Log.php index 55c74f75371..2c21bc6e9e3 100644 --- a/app/code/core/Mage/Core/Helper/Log.php +++ b/app/code/core/Mage/Core/Helper/Log.php @@ -151,7 +151,7 @@ public static function getLogLevel(null|int|Level|string $level): Level return Level::Debug; } } else { - return (match ($level) { + return match ($level) { 7, 100 => Level::Debug, 6, 200 => Level::Info, 5, 250 => Level::Notice, @@ -161,7 +161,7 @@ public static function getLogLevel(null|int|Level|string $level): Level 1, 550 => Level::Alert, 0, 600 => Level::Emergency, default => Level::Debug, - }); + }; } } From fa34650e5c20ea4dbcad6d1ed4e2adf55e8e501c Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Mon, 22 Dec 2025 04:27:03 +0100 Subject: [PATCH 34/34] revert --- app/code/core/Mage/Core/etc/config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/core/Mage/Core/etc/config.xml b/app/code/core/Mage/Core/etc/config.xml index 146f60f73de..b0d7c482628 100644 --- a/app/code/core/Mage/Core/etc/config.xml +++ b/app/code/core/Mage/Core/etc/config.xml @@ -10,7 +10,7 @@ - 1.6.0.11 + 1.6.0.10