Logging-Erweiterung für Shopware 6
Shopware 6 bietet leider keine Möglichkeit, administrative Aktivitäten im Backend zu loggen. Diese Funktionalität ist aber essentiell, um Änderungen oder Fehler protokollieren und nachvollziehen zu können.
Fertige Erweiterungen aus dem Shopware-Store
Im Shopware-Store findet man durchaus Erweiterungen, die diese Funktionalität verfügbar machen sollen und wir haben in einem Kundenprojekt eine dieser Erweiterungen getestet. Wir sind dabei schnell auf Probleme gestoßen und haben uns gegen die Nutzung der Erweiterung entschieden. Dennoch sei erwähnt, dass die getestete Erweiterung für viele Anwendungsfälle sicherlich gut geeignet ist. Unsere Anforderungen konnte diese Lösung jedoch aus den folgenden drei Gründen nicht erfüllen:
- Der initiale Anlass, uns um das Logging ein paar Gedanken mehr zu machen, war eine Fehlbedienung, bei der versehentlich im Backend eine Erweiterung deaktiviert wurde. Daraus resultierten Fehler, deren Behebung viel Zeit in Anspruch genommen hat, weil die Deaktivierung der Erweiterung nicht sofort entdeckt worden ist. Ein aussagekräftiges Log hätte uns an dieser Stelle viel Zeit erspart. Die von uns ausgewählte Erweiterung, hätte dieses Ereignis jedoch auch nicht im Log erfasst. Auf Nachfrage beim Hersteller konnte man uns nicht sagen, ob das Feature zeitnah implementiert werden wird. Damit war eigentlich schon klar, dass uns diese Erweiterung nicht weiterbringen würde, dennoch seien auch noch die beiden anderen Gründe, die gegen diese Lösung sprechen, genannt.
- Im Shopware-Backend wird nicht zwischen Änderungen durch echte Nutzer und API-Zugriffen unterschieden. Da wir in dem betroffenen Kundenprojekt eine Middleware nutzen, die stündlich mehrfach Produktdaten aktualisiert, führte das zu einem enormen Anwachsen des Logs in sehr kurzer Zeit. Wir sprechen hier von mehr als 1 Million Logeinträge in wenigen Tagen. Die schiere Datenmenge macht das von der Erweiterung erzeugte Logfile somit für uns nur schwer handhabbar.
- Die Erweiterung schreibt die Ereignisse nicht in ein Logfile, sondern in die Datenbank. Damit soll erreicht werden, dass die Änderungen im Backend direkt einsehbar gemacht werden können. In unserem Fall würde das jedoch die Datenbank einer enormen zusätzlichen Last aussetzen.
Wir schreiben die Erweiterung selbst
Letztendlich haben wir uns aus den oben genannten Gründen entschieden, eine eigene Shopware-Erweiterung, die unseren Anforderungen genügt, zu programmieren. Im ersten Schritt haben wir dafür gesorgt, dass Aktivitäten im Erweiterungsmodul in das Logfile geschrieben werden. Dabei werden alle möglichen Events rund um Shopware-Erweiterungen protokolliert, u.a. deren Installation und Deinstallation sowie deren Aktivierung und Deaktivierung. Auch die Durchführung von Updates von Erweiterungen oder Themen wird von unserer Logging-Erweiterung abgedeckt. Dabei wird unterschieden, ob das Ereignis über die Symfony Console oder von einem Administrator im Shopware-Backend ausgelöst wird. Im zweiten Fall werden auch die Informationen zum verantwortlichen Nutzer erfasst.
Im zweiten Schritt haben wir die primären Aktivitäten aus den Shopware Erlebniswelten dem Log hinzugefügt. Hier wird die Erweiterung von den Event “EntityWrittenEvent” und “EntityDeletedEvent” getriggert. An dieser Stelle werden das Erstellen, Bearbeiten und/oder Löschen von Seiten, Blöcken oder Slots (Elemente in Blöcken) geloggt. In unserem Anwendungsfall ist es besonders wichtig, dass die aktive Sprache im Frontend bei der Änderung ebenfalls im Log erfasst wird, da hier das Fehlerpotential erfahrungsgemäß besonders hoch ist.
Zu guter Letzt haben wir die Logging-Erweiterung so gebaut, dass alle Einträge in Logfiles geschrieben werden. Diese Logfiles können wir dann problemlos in unsere Analysewerkzeuge einlesen und weiter verarbeiten.
Die Architektur der Erweiterung haben wir bewusst offen gestaltet, sodass eine Erweiterung für neue Anwendungsfälle jederzeit möglich ist.
Mehr erfahren
Auf unserer Website finden Sie alle relevanten Features und Benefits zu dieser Individualentwicklung kompakt zusammengefasst: Warum ist ein vollständiges, dabei jedoch differenziertes Logging für jeden Shop-Betreiber sinnvoll und welche konkreten Vorteile hat unsere Logging-Erweiterung im Vergleich zur Standardlösung von Shopware 6? Wir haben alles Wissenswerte für Sie in unserem Artikel zur Shopware 6 Logging-Erweiterung zusammengefasst.
Wenn Sie mehr über diese Shopware-Erweiterung oder über unseren Leistungen rund um die Software Shopware erfahren möchten, sprechen Sie uns gerne an.
Wir freuen uns, wenn Ihr diesen Beitrag teilt.
Kommentare
Keine Kommentare gefunden.