4D v18

Beschreibung der Logbücher

Home

 
4D v18
Beschreibung der Logbücher

Beschreibung der Logbücher  


 

 

4D Applikationen können verschiedene Protokolldateien/Logbücher erstellen, die hilfreich sind, um das Ausführen von Operationen zu optimieren oder Fehler zu beheben. Protokolle werden in der Regel über Selektoren der Befehle SET DATABASE PARAMETER oder WEB SET OPTION gestartet und gestoppt und im Ordner Logs der Anwendung gespeichert (siehe Abschnitt Beschreibung der 4D Dateien).

Die protokollierten Daten müssen analysiert werden, um Probleme zu finden und zu beheben. Dieser Anhang beschreibt ausführlich den Inhalt folgender Logbücher:

  • 4DRequestsLog.txt
  • 4DRequestsLog_ProcessInfo.txt
  • HTTPDebugLog.txt
  • 4DDebugLog.txt
  • 4DSMTPLog.txt
  • ORDA client requests

Die Dateien nutzen einige Felder gemeinsam, so dass Sie eine Chronologie erstellen und beim Debuggen Einträge miteinander verbinden können:

  • sequence_number: Diese Nummer ist einmalig in allen Debug Logs und wird für jeden neuen Eintrag unabhängig vom Logbuch erhöht, so dass Sie die exakte Sequenz der Operationen erkennen können.
  • connection_uuid: Für jeden 4D Prozess, der auf einem 4D Client erstellt wurde, welcher an einen Server angemeldet ist. Diese UUID der Verbindung wird auf Server- und Client-Seite geführt, so dass Sie leicht den remote Client identifizieren können, der den Prozess gestartet hat.

Dieses Logbuch protokolliert Standardanfragen jeweils auf dem Rechner mit 4D Server oder 4D Remote, der den Befehl ausgeführt hat (außer Web Anfragen).

Logbuch starten:

  • auf dem Server:
     SET DATABASE PARAMETER(4D Server log recording;1) //Server Seite


  • auf einem Client:
     SET DATABASE PARAMETER(Client Log Recording;1) //Remote Seite

Hinweis: Diese Anweisung startet auch das Logbuch 4DRequestsLog_ProcessInfo.txt (siehe nächster Abschnitt).

Kopfteile
Diese Datei startet mit folgenden Kopfteilen:

  • Identifier der protokollierten Sitzung
  • Hostname des Server, der die Applikation hostet
  • User Login Name: Login auf dem Betriebssystem des Benutzers, der die 4D Applikation auf dem Server gestartet hat.

Inhalt
Für jede Anfrage werden folgende Felder protokolliert:

FeldnameBeschreibung
sequence_numberEinmalige und fortlaufende Nummer der Operation in der protokollierten Sitzung
timeDatum und Zeit im ISO Format 8601: 'YYYY-MM-DDTHH:MM:SS.sss'
systemidSystem ID
componentSignatur der Komponente (z.B., '4SQLS' oder 'dbmg')
process_info_indexEntspricht dem "index" Feld im Logbuch 4DRequestsLog_ProcessInfo.txt und ermöglicht, eine Anfrage an einen Prozess zu binden.
requestAnfrage ID in C/S oder Meldungsstring für SQL Anfragen oder LOG EVENT Meldungen
bytes_inAnzahl der empfangenen Bytes
bytes_out]Anzahl der gesendeten Bytes
server_duration | exec_duration Hängt davon ab, wo das Log generiert wird:
  • server_duration bei Generieren auf dem Client -- Beanspruchte Zeit in Millisekunden für den Server zum Bearbeiten der Anfrage und Senden einer Antwort, im Bild unten von B nach F,
    ODER,
  • exec_duration bei Generieren auf dem Server -- Beanspruchte Zeit in Millisekunden für den Server zum Bearbeiten der Anfrage, im Bild unten von B nach E.
write_durationBeanspruchte Zeit in Millisekunden zum Senden:
  • Der Anfrage (wenn sie auf dem Client läuft), im Bild unten von A nach B.
  • Antwort (wenn sie auf dem Server läuft), im Bild unten von E nach F.
task_kindPreemptive oder kooperativ (jeweils 'p' oder 'c')
rttBeanspruchte Zeit in Millisekunden für den Client zum Senden der Anfrage und zum Erkennen für den Server, im Bild unten von A nach D und von E nach H.
  • Wird nur mit der Netzwerkschicht ServerNet gemessen, gibt 0 zurück bei Verwenden der legacy Netzwerkschicht.
  • Gibt bei Windows Versionen älter als Windows 10 oder Windows Server 2016 ebenfalls 0 zurück.

Ablauf der Anfrage:

Dieses Logbuch protokolliert Angaben zu jedem Prozess, ausgeführt auf dem 4D Server Rechner oder dem 4D Remote Rechner, welcher den Befehl ausgeführt hat (außer Web Anfragen).

Logbuch starten:

  • auf dem Server:
     SET DATABASE PARAMETER(4D Server log recording;1) //Server Seite


  • auf einem Client:
     SET DATABASE PARAMETER(Client Log Recording;1) //Remote Seite

Hinweis: Diese Anweisung startet auch das Logbuch 4DRequestsLog.txt (siehe voriger Absatz).

Kopfteile
Diese Datei startet mit folgenden Kopfteilen:

  • Identifier der protokollierten Sitzung
  • Hostname des Server, der die Applikation hostet
  • User Login Name: Login auf dem Betriebssystem des Benutzers, der die 4D Applikation auf dem Server gestartet hat.

Inhalt
Für jeden Prozess werden folgende Felder protokolliert:

FeldnameBeschreibung
sequence_numberEinmalige und fortlaufende Nummer der Operation in der protokollierten Sitzung
timeDatum und Zeit im ISO Format 8601: 'YYYY-MM-DDTHH:MM:SS.sss'
process_info_indexEinmalige und sequentielle Prozessnummer
CDB4DBaseContextKontext UUID der DB4D Komponente der Datenbank
systemidSystem ID
server_process_idProzess ID auf dem Server
remote_process_idProzess ID auf dem Client
process_nameProzessname
cIDIdentifier der 4D Verbindung
uIDIdentifier von 4D Client
IPIPv4/IPv6 Adresse des Client
host_nameHostname des Client
user_nameName des Benutzer Login auf dem Client
connection_uuidUUID Identifier der Prozessverbindung
server_process_unique_idEinmalige Prozess ID auf dem Server

Dieses Logbuch protokolliert jede HTTP Anfrage und jede Antwort in unformatierter Form. Protokolliert werden die Anfragen, inkl. Kopfteile; optional lassen sich auch Hauptteile protokollieren.

Logbuch starten:

 WEB SET OPTION(Web debug log;wdl enable without body//andere Werte sind verfügbar

Folgende Felder werden für Anfrage und Antwort protokolliert:

FeldnameBeschreibung
SocketIDID des Socket, der zur Kommunikation verwendet wird
PeerIPIPv4 Adresse des Host (Client)
PeerPortVom Host verwendeter Port (Client)
TimeStampZeitstempel in Millisekunden (seit Systemstart)
ConnectionIDUUID der Verbindung (UUID des VTCPSocket, der zur Kommunikation verwendet wird)
SequenceNumberEinmalige und sequentielle Nummer der Operation in der protokollierten Sitzung

Dieses Logbuch protokolliert jedes Ereignis, das auf 4D Programmierebene auftritt. Der Standardmodus zeigt eine einfache Ansicht der Ereignisse.

Logbuch starten:

 SET DATABASE PARAMETER(Debug Log Recording;2) //Standard, alle Prozesse
 SET DATABASE PARAMETER(Current process debug log recording;2) //Standard, nur aktueller Prozess

Für jedes Ereignis werden folgende Felder protokolliert:  

Spalte #Beschreibung
1Einmalige und fortlaufende Nummer der Operation in der protokollierten Sitzung
2Vergangene Zeit in Millisekunden seit Protokollstart
3Prozess ID (p=xx) und einmalige Prozess ID (puid=xx)
4Stapelebene
5Kann Befehlsname/ Methodenname/Meldung/ Task Start Stop Info/Plug-In Name, Ereignis oder Callback/Connection UUID sein
6Für die protokollierte Operation beanspruchte Zeit in Millisekunden (unterscheidet sich von der 2. Spalte)

Dieses Logbuch protokolliert jedes Ereignis, das auf der 4D Programmierebene auftritt in einem kompakten Format mit Tabulatoren, das zusätzliche Angaben enthält (verglichen mit dem Standardformat).

Logbuch starten:

 SET DATABASE PARAMETER(Debug Log Recording;2+4) //erweitertes Format mit Tabulatoren, alle Prozesse
 SET DATABASE PARAMETER(Current process debug log recording;2+4) //erweitert, nur akueller Prozess

Folgende Felder werden für jedes Ereignis protokolliert:  

Spalte #Beschreibung
1Einmalige und fortlaufende Nummer der Operation in der protokollierten Sitzung
2Vergangene Zeit seit Protokollstart im Format "hh:mm:ss:ms" (bei Bedarf wird ein Zähler für Tage vorangestellt. Wurde das Protokoll z.B. vor 3 Tagen gestartet, könnte das so aussehen "3+11:58:23:163")
3Prozess ID
4Einmalige Prozess ID
5Stapelebene
6Kann folgendes anzeigen (je nach Art der protokollierten Eingabe in der 8. Spalte):
  • ID eines Befehls der Programmiersprache (wenn Typ=1)
  • Ein Methodenname (wenn Typ=2)
  • Eine Kombination von PluginIndex;PluginBefehl (wenn Typ=4, 5, 6 oder 7). Kann etwas enthalten wie '3;2'
  • Eine Task Connection UUID (wenn Typ=8)
  • oder eine 'startende Sequenznummer' beim Schließen einer Stapelebene (dies sollte der Sequenznummer der gestarteten aktuellen Aktion entsprechen)
  • 121  15:16:50:777  5  8  0  Methodenaufruf  2  0
    122  15:16:50:777  5  8  1  283  1  0
    123  15:16:50:777  5  8  1  122  -1  0  3
    124  15:16:50:777  5  8  0  121  -2  0  61
    Hier ist in der Zeile (124) der Wert '121' der 6. Spalte gleich der Sequenznummer der ersten Zeile (Stapelebene 0). In der Zeile (123) ist der Wert '122' der 6. Spalte gleich der Sequenznummer der oberen Zeile (Stapelebene 1) etc.
    7Parameter, die Befehlen, Methoden oder Plug-ins übergeben wurden
    8Art der protokollierten Operation. Dieser Wert kann absolut sein:
    1: Befehl
    2: Methode
    3: Meldung (nur von Befehl LOG EVENT gesendet)
    4: PluginMeldung
    5: PluginEreignis
    6: PluginBefehl
    7: PluginCallback
    8: Task
    Ein negativer Wert bedeutet lediglich, dass es sich um das schließende Gegenstück der Stapelebene handelt (siehe 8. Spalten in den Zeilen 123 und 124 des obigen Protokolls).
    9Formularereignis, wenn vorhanden; ist sonst leer (die Spalte wird benützt, wenn Code in einer Formularmethode oder einem Skript ausgeführt wird)
    10Verbrauchte Zeit in Mikrosekunden für die aktuell protokollierte Aktion; nur für schließende Stapelebenen (siehe 10. Spalten in Zeilen 123 und 124 im Protokoll oben)

    Dieses Logbuch speichert jeden Austausch zwischen der 4D Applikation und dem SMTP Server. Es lässt sich in zwei Ausführungen erstellen:

    • Reguläre Version: genannt 4DSMTPLog.txt, keine Anhänge, überschreibt alle 10 MB die Datei automatisch; für reguläres Debugging.
      Dieses Logbuch starten:
      •  SET DATABASE PARAMETER(SMTP Log;1) //smtp Log starten


      • 4D Server: Auf der Seite Wartung des 4D Server Verwaltungsfensters die Schaltfläche Starte Request und Debug Logbuch anklicken.
      Der Befehl Get 4D file gibt den Pfad des Logbuchs zurück.
    • Erweiterte Version: mit Anhängen, kein automatisches Überschreiben; für spezifische Zwecke reserviert
      Dieses Logbuch starten:
       $server:=New object
       ...$server.logFile:="MySMTPAuthLog.txt"
       $transporter:=SMTP New transporter($server)

    Inhalt
    Für jede Anfrage werden folgende Felder protokolliert:

    Spalte #Beschreibung
    1Einmalige und fortlaufende Nummer der Operation in der protokollierten Sitzung
    2Datum und Zeit im Format RFC3339 (yyyy-mm-ddThh:mm:sss)
    3Prozess ID
    4Einmalige Prozess ID
    5
    • Info beim Starten der SMTP Sitzung; Server Host Name, TCP Port Nummer zum Anmelden an den SMTP Server und TLS Status,
      oder
    • Datenaustausch zwischen Server und Client, beginnt mit "S <" (vom SMTP Server empfangene Daten) oder "C >" (vom SMTP Client gesendete Daten): Vom Server gesendeter Authentifizierungsmodus und gewählter Authentifizierungsmodus, jeder vom SMTP Server protokollierte Fehler, Information im Kopfteil der gesendeten Mail (nur reguläre Version) und wenn die Mail auf dem Server gesichert wird,
      oder
    • MIME Information aller gesendeten Mails* (nur erweiterte Version),
      oder
    • Information beim Schließen der SMTP Sitzung

    * Warnung: MIME Inhalt (Anhänge) kann eine große Menge an Daten sein. Stellen Sie sicher, dass es genügend Platz auf der Festplatte gibt, um diese Daten zu sichern

    Dieses Logbuch speichert jede ORDA Anfrage, die von einem remote Rechner gesendet wird. Sie können es im Hauptspeicher halten oder in eine Datei auf der Festplatte schreiben. Name und Speicherort dieses Logbuchs können Sie selbst bestimmen.

    Dieses Logbuch starten Sie folgendermaßen:

      //für die Ausführung auf einem remote Rechner
     ds.startRequestLog(File("/LOGS/ordaLog.txt")) //lässt sich auch im Hauptspeicher halten

    Hinweis: Das Mitschreiben der einmaligen Sequenznummer im Logbuch der ORDA Anfragen müssen Sie aktivieren:

      //für die Ausführung auf einem remote Rechner
     SET DATABASE PARAMETER(Client Log Recording;1) //Sequenznummer des Logbuchs aktivieren
     ds.startRequestLog(File("/LOGS/ordaLog.txt")) //lässt sich auch im Hauptspeicher halten
     SET DATABASE PARAMETER(Client Log Recording;0) //Sequenznummer deaktivieren

    Für jede Anfrage werden folgende Felder protokolliert:

    FeldnameBeschreibungBeispiel
    sequenceNumberEinmalige und fortlaufende Nummer der Operation in der protokollierten Sitzung104
    urlClient ORDA URL der Anfrage"rest/Persons(30001)"
    startTimeStartdatum und Zeit im ISO Format 8601"2019-05-28T08:25:12.346Z"
    endTimeEnddatum und Zeit im ISO Format 8601"2019-05-28T08:25:12.371Z"
    durationDauer der Client Bearbeitung (ms)25
    responseObjekt Server Antwort{"status":200,"body":{"__entityModel":"Persons",[...]

     
    EIGENSCHAFTEN 

    Produkt: 4D
    Thema: Debug-Logbücher

     
    SEITENINHALT 
     
    GESCHICHTE 

    Geändert: 4D v17 R5
    Geändert: 4D v17 R6

     
    ARTIKELVERWENDUNG

    4D Designmodus ( 4D v18)