Optimieren Sie Ihren ORDA-Code mit der Protokollierung von Anfragen

Automatisch übersetzt von Deepl

Möchten Sie den Datenverkehr Ihrer ORDA-Anfragen zwischen einem Client und dem 4D Server analysieren? Manchmal kann es eine Weile dauern, bis Sie eine Antwort vom Server erhalten, und Sie fragen sich, ob das am Netzwerkverkehr liegt oder an einer nicht optimierten Anfrage, die Sie geschrieben haben! Glücklicherweise ermöglicht es 4D v17 R6, die wahrscheinlichen Gründe für diese Latenz mit den neuen ORDA Methoden zu ermitteln, die für das ds Objekt. Es handelt sich dabei nicht nur um Debugging-Funktionen, sondern Sie können auch Ihren ORDA-Code mit einem besseren Verständnis der gesendeten Anfragen optimieren.

Aktivieren Sie die Protokollierung von ORDA-Anfragen

Die startRequestLog() Member-Methode ist sehr flexibel, da sie ORDA-Anfragen entweder in einer Datei oder im Speicher protokollieren kann.

Protokollierung in einer Datei

Um in eine Datei zu protokollieren, rufen Sie einfach startRequestLog() mit einem File Objekt auf, das angibt, wo Ihre ORDA-Anfragen protokolliert werden sollen. Im folgenden Beispiel führen wir eine Abfrage über ein nicht indiziertes Feld durch, was einige Zeit dauern kann. Dank dieser neuen Funktion können wir die Dauer unserer Abfragen überprüfen:

C_OBJECT($employees;$file)
$file :=File("/PACKAGE/Logs/ORDARequests.txt")
$file .delete()
ds .startRequestLog($file)
$employees :=ds.Employee.query("firstname = :1"; "abcd") //firstname is not indexed

ds .stopRequestLog()

Jede Anfrage wird als JSON-Darstellung eines Objekts protokolliert.

Hier ist der Inhalt der Datei ORDARequests.txt:

[
{
..
.
"startTime": "2019-07-02T12:33:25.922Z",
"endTime": "2019-07-02T12:33:27.681Z",
"duration":4200,
"response":{ ...}
...
}
]

log to memory

Jede Anfrage kann als Objekt in einer Sammlung protokolliert werden, die mit der getRequestLog() member-Methode abgerufen werden kann.

Da diese Funktion eine Sammlung zurückgibt, können Sie alle verfügbaren Sammlungsmethoden verwenden.

C_OBJECT($first;$e)
C_COLLECTION (
$log)

ds .startRequestLog(10) // Only the last 10 requests will be kept in memory
$first :=ds.Persons.all().first()
$e :=ds.Persons.query("name=:1"; "Brown")
$log :=ds.getRequestLog()
ALERT ("Die längste Anfrage dauerte: "+String($log.max("Dauer"))+" ms")
ds .stopRequestLog()

Deaktivieren der Protokollierung von ORDA-Anfragen

Um die Protokollierung von ORDA-Anfragen zu beenden, rufen Sie einfach die stopRequestLog() member-Methode auf, wie in den obigen Beispielen gezeigt.

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.