Logging

Der AUDIT Logger schreibt die Logs in die Datenbank application/source/util/logging/handler/AuditTable.class.php

Key Beschreibung
table, key, identitfier Datenbank Tabelle
oid ,rid Objekt ID
date Datum (optional) Default now()

Beispiel für einen Eintrag:

Die Nachricht muss eine i18n: Zeichenkette sein.

i18n:plugin.commerce.stockreservation.positionedone::table=sh_order_logging::oid=1050::scid=1542::iid=10030::count=1.::variant=M::lid=0

Die Logs werden in jeweiligen Log Tabellen gespeichert. Die Log Tabelle wird im Model unter der Konstante AUDIT_TABLE definiert.

 $table=\Alvine\Application\Platform\Model\Commerce\Turnover\Retoure::AUDIT_TABLE;
 $message='i18n:plugin.commerce.stockreservation.positionedone::table='.$table.'::oid='.$rid;
 \Alvine\Util\Logging\Logger::getLogger(\Alvine\Application\Platform\Util\Logging\LoggerName::AUDIT)->logInfo($message);

Beispiel mit Klasse und Namen der Methode:

 $table=\Alvine\Application\Platform\Model\Commerce\Turnover\Retoure::AUDIT_TABLE;
 $message='i18n:'.\strtr(\strtolower(__CLASS__), '\\', '.').'.'.\strtolower(__FUNCTION__).'.example::table='.$table.'::oid='.$rid;
 \Alvine\Util\Logging\Logger::getLogger(\Alvine\Application\Platform\Util\Logging\LoggerName::AUDIT)->logInfo($message);

Konfiguration

Damit die Daten auch in die Datenbank geschrieben werden muss der Logger wie folgt definiert sein:

application.logging.handler.audit.class=\Alvine\Application\Platform\Util\Logging\Handler\AuditTable
application.logging.handler.audit.logger.name=audit
application.logging.handler.audit.loglevel=ALL
application.logging.handler.audit.formatter.class=NULL

Datenbank

Die Log Tabellen sind alle Identisch aufgebaut

CREATE TABLE `XXXXXXX_logging` (
  `LID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `sys_OID` int(10) unsigned DEFAULT NULL,
  `sys_userUID` int(10) DEFAULT NULL,
  `sys_description` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Log Beschreibung',
  `sys_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'Log Datum',
  PRIMARY KEY (`LID`),
  KEY `sys_OID` (`sys_OID`),
  KEY `sys_userUID` (`sys_userUID`),
  KEY `sys_date` (`sys_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Damit die alten Log Anzeigen noch funktioneren wird in der Zeit ein Trigger eingerichtet. Dieser schreibt zusätzlich einen alten Eintrag in die co_logging Tabelle. Wenn das Backend die neue Log Tabelle anzeigen kann , kann dieser Trigger gelöscht werden.

DROP TRIGGER IF EXISTS `sh_order_logging_after_insert_co_logging`;
DELIMITER $$
CREATE TRIGGER `sh_order_logging_after_insert_co_logging` AFTER INSERT ON `sh_order_logging`
FOR EACH ROW
BEGIN

INSERT INTO co_logging SET identifier='shop.order.process', RID=NEW.sys_OID, UID=NEW.sys_userUID, description=NEW.sys_description;

END$$
DELIMITER ;