Protokollierung von ORDA-Aufrufen auf dem Server

Seit seiner Veröffentlichung steigt die Popularität von ORDA unaufhörlich, und es wird nun häufig auf Ihren Produktionsservern eingesetzt. Mit 4D v20 bieten wir Ihnen 2 Verbesserungen bei der serverseitigen Protokollierung von ORDA-Anfragen. Die erste ist eine Verbesserung des Request Logs, das nun mehr Informationen über ORDA-Aufrufe liefert. Die zweite ist das Hinzufügen eines serverseitigen ORDA-Protokolls, das dem clientseitigen ORDA-Protokoll ähnelt. Ich möchte Ihnen diese neuen Funktionen vorstellen.

Die erste Verbesserung betrifft das Anforderungsprotokoll. Das Anforderungsprotokoll ist äußerst wichtig, wenn Sie Ihren Produktionsserver optimieren wollen. Es gibt Aufschluss über die eingegangenen Anfragen, die Zeit, die für ihre Bearbeitung benötigt wurde, und die über das Netzwerk gesendeten Daten. Es ist auch wichtig zu bedenken, dass die Aktivierung von Protokollen Auswirkungen auf die Leistung hat. Das Anforderungsprotokoll ist sehr optimiert und kann daher in der Produktion verwendet werden, ohne die Serverleistung zu stark zu beeinträchtigen.

Wenn Sie das Anfrageprotokoll auf Ihrem Server aktivieren, sehen Sie, dass ORDA-Anfragen mit einer Anfrage-ID in den 14000ern protokolliert werden (Sie finden die Anfrage-IDs hier). In der zusätzlichen Spalte finden Sie auch Informationen über die Datenklasse oder das Attribut. Diese Zeile zeigt zum Beispiel an, dass das Attribut Employee.Bloby geändert wurde (fett gedruckt die Anfrage-ID und der Inhalt der zusätzlichen Spalte):


Die zweite Verbesserung ist recht einfach zu handhaben. Sie können serverseitige ORDA-Logs aktivieren, indem Sie die Funktion startRequestLog auf dem Datenspeicher aufrufen. Zum Beispiel:

ds.startRequestLog()

Wenn Sie diesen Codeschnipsel ausführen, werden alle Ihre ORDA-Anfragen in der Datei ORDAlog.jsonl protokolliert. Die serverseitigen ORDA-Logs verwenden die json lines-Syntax, wobei jede Zeile eine json-Beschreibung der gesendeten Anfrage ist. Hier ist ein Beispiel für eine solche Zeile:

{
"url": "rest/Firma[4]",
"systemUserName": "nbrachfogel",
"userName": "Designer",
"machineName": "OPT9010-1168",
"taskID": 5,
"taskName": "P_1",
"startTime": "2023-05-22T14:29:00.289",
"response": {
"status": 200,
"body": {
"__entityModel": "Firma",
"__DATACLASS": "Unternehmen",
"__KEY": "4",
"__TIMESTAMP": "2023-03-30T14:16:47.337Z",
"__STAMP": 1,
"ID": 4,
"Name": "Compagnie 31740",
"Turnover": 32205,
"MyEmployees": {
"__deferred": {
"uri": "/rest/Company[4]/MyEmployees?$expand=MyEmployees"
}
}
}
},
"sequenceNumber": 60,
"duration": 282
}
Sie können Informationen über den Benutzer, die Dauer der Ausführung der Anfrage und die Antwort des Servers sehen. Sie haben auch die Sequenznummer, die dieselbe Nummer ist, die Sie im Anforderungsprotokoll finden und die beide Protokolle miteinander verbindet (wenn das Anforderungsprotokoll nicht aktiviert ist, wird die Sequenznummer im ORDA-Protokoll weggelassen).

Das serverseitige ORDA-Protokoll ist für die Fehlersuche sehr interessant. Es gibt Ihnen detaillierte Informationen über die Anfragen, die der Server erhält, und seine Antworten. Es beansprucht jedoch viele Ressourcen, sowohl CPU als auch Festplattenspeicher, so dass Sie es auf Ihrem Produktionsserver mit Bedacht einsetzen sollten.

Diese beiden Logs können auch über die Log-Konfigurationsdatei oder direkt über die Registerkarte Wartung im 4D Server Administrationsfenster aktiviert werden.

blank
Mit der Schaltfläche Start Request and Debug Logs werden sowohl das Request- als auch das ORDA-Protokoll aktiviert.

Wir gehen davon aus, dass diese beiden Funktionen Ihnen bei der Fehlersuche und Optimierung Ihrer ORDA-Aufrufe helfen werden. Wenn Sie Kommentare oder Fragen haben, zögern Sie nicht, diese in den 4D Foren zu stellen.

Nicolas Brachfogel
Product Owner & Senior Developer - Nicolas Brachfogel kam 2017 als Senior Developer (4D Server und Netzwerke) zu 4D. Als Product Owner, der die Freigabe von Apple Silicon verwaltet, ist er für das Schreiben von User Stories und deren Umsetzung in funktionale Spezifikationen zuständig und stellt sicher, dass die Implementierungen der Funktionen den Kundenanforderungen entsprechen. Nicolas ist Absolvent des Institut Supérieur d'Informatique Appliquée (INSIA) und begann seine Karriere als Softwareentwickler im Jahr 2001. Nachdem er mehrere Jahre in Java und C++ programmiert hatte, spezialisierte er sich auf die Client-Server-Entwicklung für Videospielunternehmen. Als Server-Entwickler/Architekt arbeitete er erfolgreich an den Server-Architekturen vieler Spiele (Dofus Arena, Drakerz, Trivial Pursuit Go!).