浏览代码

Alerts logger: ability to disable #5514

Aleksandr Trofimov 4 月之前
父节点
当前提交
097a450a52

+ 43 - 21
inc/classes/BxDolAlertsStats.php

@@ -64,7 +64,7 @@ class BxDolAlertsStats extends BxDol
 
     public static function flushStats(): void
     {
-        if (!self::$stats)
+        if (!self::$stats || !getParam('sys_alerts_stats'))
             return;
 
         foreach (self::$stats as $hookName => $data) {
@@ -93,6 +93,10 @@ class BxDolAlertsStats extends BxDol
         if (!self::$logs)
             return;
 
+        $oDb = BxDolDb::getInstance();
+        if (!getParam('sys_alerts_stats'))
+            $aMap = $oDb->getPairs('SELECT CONCAT(unit, ":", action) AS `key`, 1 AS `val` FROM sys_alerts_log', 'key', 'val');
+
         foreach (self::$logs as $s => $data) {
             $aExtraRefs = [];
             foreach($data['extra'] as $sKey => $mixedValue) {
@@ -101,27 +105,45 @@ class BxDolAlertsStats extends BxDol
                 }
             }
             self::$logs[$s]['extra_refs'] = json_encode(self::$logs[$s]['extra_refs'] ?? []);
-            self::$logs[$s]['extra'] = json_encode(self::$logs[$s]['extra']);
+            self::$logs[$s]['extra'] = json_encode(self::$logs[$s]['extra']);            
 
-            BxDolDb::getInstance()->query("
-                INSERT INTO sys_alerts_log
-                SET
-                    unit = :unit,
-                    action = :action,
-                    object = :object,
-                    sender = :sender,
-                    extra = :extra,
-                    extra_refs = :extra_refs,
-                    ts = UNIX_TIMESTAMP(),
-                    counter_total = :counter,
-                    counter_24h = :counter,
-                    counter_per_request = :counter
-                ON DUPLICATE KEY UPDATE
-                    ts = UNIX_TIMESTAMP(),
-                    counter_total = counter_total + :counter,
-                    counter_24h = counter_24h + :counter,
-                    counter_per_request = GREATEST(counter_per_request, :counter)
-            ", self::$logs[$s]);
+            if (getParam('sys_alerts_stats')) {
+                $oDb->query("
+                    INSERT INTO sys_alerts_log
+                    SET
+                        unit = :unit,
+                        action = :action,
+                        object = :object,
+                        sender = :sender,
+                        extra = :extra,
+                        extra_refs = :extra_refs,
+                        ts = UNIX_TIMESTAMP(),
+                        counter_total = :counter,
+                        counter_24h = :counter,
+                        counter_per_request = :counter
+                    ON DUPLICATE KEY UPDATE
+                        ts = UNIX_TIMESTAMP(),
+                        counter_total = counter_total + :counter,
+                        counter_24h = counter_24h + :counter,
+                        counter_per_request = GREATEST(counter_per_request, :counter)
+                ", self::$logs[$s]);
+            } else {                
+                $sKey = self::$logs[$s]['unit'] . ':' . self::$logs[$s]['action'];
+                if (!isset($aMap[$sKey])) {
+                    $oDb->query("
+                        INSERT IGNORE INTO sys_alerts_log
+                        SET
+                            unit = :unit,
+                            action = :action,
+                            object = :object,
+                            sender = :sender,
+                            extra = :extra,
+                            extra_refs = :extra_refs,
+                            ts = 0,
+                            counter_per_request = :counter
+                    ", self::$logs[$s]);
+                }
+            }
         }
     }
 }

+ 3 - 0
install/sql/system.sql

@@ -468,6 +468,9 @@ INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `ex
 (@iCategoryId, 'sys_bg_jobs_workers_limit', '_adm_stg_cpt_option_sys_bg_jobs_workers_limit', '3', 'digit', '', '', '', '', 304),
 (@iCategoryId, 'sys_bg_jobs_cleanup_timeout', '_adm_stg_cpt_option_sys_bg_jobs_cleanup_timeout', '30', 'digit', '', '', '', '', 306),
 
+(@iCategoryId, 'sys_alerts_logger', '_adm_stg_cpt_option_sys_alerts_logger', 'on', 'checkbox', '', '', '', '', 310),
+(@iCategoryId, 'sys_alerts_stats', '_adm_stg_cpt_option_sys_alerts_stats', '', 'checkbox', '', '', '', '', 312),
+
 (@iCategoryId, 'sys_maintenance_mode', '_adm_stg_cpt_option_sys_maintenance_mode', '', 'checkbox', '', '', '', '', 400),
 (@iCategoryId, 'sys_maintenance_mode_html', '_adm_stg_cpt_option_sys_maintenance_mode_html', '', 'code', '', '', '', '', 402);
 

+ 2 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -1741,6 +1741,8 @@
     <string name="_adm_stg_cpt_option_sys_push_queue_time"><![CDATA[Push queue execution flag]]></string>
     <string name="_adm_stg_cpt_option_sys_push_queue_send_per_start"><![CDATA[Number of messages to send from Push queue per run]]></string>
     <string name="_adm_stg_cpt_option_sys_push_queue_send_per_start_to_recipient"><![CDATA[Number of messages to send from Push queue per run to some recipient]]></string>
+    <string name="_adm_stg_cpt_option_sys_alerts_logger"><![CDATA[Alerts/hooks logger]]></string>
+    <string name="_adm_stg_cpt_option_sys_alerts_stats"><![CDATA[Alerts/hooks stats]]></string>
     <string name="_adm_stg_cpt_option_sys_sms_default"><![CDATA[Provider]]></string>
     <string name="_adm_stg_cpt_option_sys_sms_twilio_sid"><![CDATA[Twilio: Account SID]]></string>
     <string name="_adm_stg_cpt_option_sys_sms_twilio_token"><![CDATA[Twilio: Auth token]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -1716,6 +1716,8 @@
     <string name="_adm_stg_cpt_option_sys_push_queue_time"><![CDATA[Флаг выполнения Push очереди]]></string>
     <string name="_adm_stg_cpt_option_sys_push_queue_send_per_start"><![CDATA[Количество сообщенией, отправляемое из Push очереди при каждом запуске]]></string>
     <string name="_adm_stg_cpt_option_sys_push_queue_send_per_start_to_recipient"><![CDATA[Количество сообщенией, отправляемое из Push очереди одному и тому же получателю при каждом запуске]]></string>
+    <string name="_adm_stg_cpt_option_sys_alerts_logger"><![CDATA[Журнал оповещений/хуков]]></string>
+    <string name="_adm_stg_cpt_option_sys_alerts_stats"><![CDATA[Статистика оповещений/хуков]]></string>
     <string name="_adm_stg_cpt_option_sys_sms_default"><![CDATA[Поставщик]]></string>
     <string name="_adm_stg_cpt_option_sys_sms_twilio_sid"><![CDATA[Twilio: SID учетной записи]]></string>
     <string name="_adm_stg_cpt_option_sys_sms_twilio_token"><![CDATA[Twilio: Токен аутентификации]]></string>