Diese Funktion steht Ihnen ab 2024.4 zur Verfügung.
Hintergrund
Um Performanceprobleme in einem Produktivsystem zur Laufzeit besser analysieren zu können, ist es notwendig nicht nur die Dauer einer Aktion zu loggen, sondern auch die der einzelnen Schritte (Codeabschnitte) innerhalb dieser Aktion. Um das Produktivsystem nicht unnötig zu belasten, sollte dies ohne die Aktivierung des allgemeinen Debug-Loggings erfolgen können, zudem ist es hilfreich diese Logausgaben in einer speziellen Logdatei zu sammeln, statt verteilt in unterschiedlichen Logs zu hinterlegen.
Beschreibung
JobRouter verwendet die Symfony Stopwatch Komponente, um die Ausführungszeit und den Speicherverbrauch bestimmer Aktionen aufzuzeichnen. Diese Aktionen umfassen aktuell:
•Eingangs- und Prozessboxen: Öffnen, Blättern & Filtern
•Archivansichten: Öffnen, Blättern & Filtern
•Benutzerschritte öffnen (initiales Laden eines Dialoges ohne Sub-Requests, nur für klassische Dialoge)
•Benutzerschritte senden
•Login/Logout
Logging
Das Logging kann über die config.php aktiviert werden und ist ohne das reguläre Debug-Log (CONST_DEBUG oder CONST_LOG_LEVEL_FILE) möglich.
<?php
// ...
return [
'db' => [
// ...
],
'log' => [
'stopwatch' => true
],
];
Ist das Logging aktiv, wird im output\log-Verzeichnis eine Datei namens stopwatch_[YYYYMMMDD].log erzeugt.
Bitte beachten Sie: die Logdateien werden sehr groß, daher sollte dieses Logging nur im Analysefall aktiviert werden und nicht dauerhaft aktiv sein.
Logviewer
Da die Logausgaben sehr umfangreich sind, steht ein Logviewer unter der URL http(s)://[jobrouter-url]/performancelogviewer zur Verfügung. Für den Aufruf des Viewers müssen Sie eingeloggt sein und das Recht Konfiguration besitzen.
In dem Viewer kann eine bestimmte Stopwatch-Logdatei ausgewählt und auf verschiedene Informationen gefiltert werden.
•LogFile: listet alle in output\log verfügbaren Stopwatch-Dateien
•Sort order: bestimmt die Sortierung der Einträge nach Laufzeit (Duration) und Speicherverbrauch (Memory). Lässt man den Filter leer, wird absteigend nach Uhrzeit sortiert.
•Username in log file: filtert nach Einträgen eines bestimmten Benutzers
•Action type: die Aktion, die geloggt wurde
Es werden unterschiedliche Funktionen innerhalb der Codeausführung geloggt, die zum Teil verschachtelt sind. Die (Unter-)Funktion, die genauer untersucht werden sollte, wird rot markiert.
Bitte beachten Sie: die Logausgaben sind sehr technisch und für Unbeteiligte nicht zwingend verständlich. Sie sind vornehmlich für Supportzwecke gedacht, wenn im Rahmen eines Tickets eine Performanceanalyse durch die Entwickung notwendig wird. In diesem Fall hängen Sie die betroffene Logdatei mit dem Hinweis auf den betroffenen Benutzer und die betroffene Aktion bitte ans Ticket an. Wenn Sie selbst keinen Zugriff auf die Logdateien haben, exportieren Sie bitte die Systemanalyse.

Es können auch Stopwatch-Dateien eines Fremdsystems in den output\log-Ordner kopiert und mittels des Logviewers angezeigt werden. Diese müssen zwingend mit stopwatch_* beginnen, damit sie vom Logviewer erkannt werden.