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 ;