Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19
Beschreibung der Logbücher

Beschreibung der Logbücher  


 

 


4D Anwendungen können mehrere Protokolldateien erzeugen, die für die Fehlersuche oder die Optimierung ihrer Ausführung nützlich sind. Logs werden in der Regel mit Selektoren der Befehle SET DATABASE PARAMETER oder WEB SET OPTION gestartet oder gestoppt und im Ordner Logs der Datenbank gespeichert (siehe Abschnitt Beschreibung der 4D Dateien).


Die protokollierten Informationen müssen analysiert werden, um Probleme zu erkennen und zu beheben. In diesem Abschnitt finden Sie eine umfassende Beschreibung der folgenden Protokolldateien:

  • 4DRequestsLog.txt
  • 4DRequestsLog_ProcessInfo.txt
  • HTTPDebugLog.txt
  • 4DDebugLog.txt (Standard and Tabular)
  • 4DDiagnosticLog.txt,
  • 4DIMAPLog.txt, 4DPOP3Log.txt, and 4DSMTPLog.txt
  • ORDA client requests log file

Hinweis: Wenn eine Logdatei entweder auf 4D Server oder auf dem Remote Client erzeugt werden kann, wird das Wort "Server" an den serverseitigen Logdateinamen angehängt, zum Beispiel "4DRequestsLogServer.txt"

Diese Protokolldateien haben einige Felder gemeinsam, damit Sie beim Debuggen eine Chronologie erstellen und Verbindungen zwischen den Einträgen herstellen können:
  • sequence_number: diese Nummer ist über alle Debug-Protokolle hinweg eindeutig und wird für jeden neuen Eintrag inkrementiert, was auch immer die Protokolldatei sein mag, so dass Sie die genaue Reihenfolge der Operationen erkennen können.
  • connection_uuid: für jeden 4D Prozess, der auf einem 4D Client erstellt wird und sich mit einem Server verbindet, wird diese Verbindungs-UUID sowohl auf Server- als auch auf Client-Seite protokolliert. Damit können Sie den Remote-Client, der den jeweiligen Prozess gestartet hat, leicht identifizieren.

Diese Protokolldatei zeichnet Standardabfragen auf, die vom 4D Server Rechner oder dem 4D Remote Rechner, der den Befehl ausgeführt hat, durchgeführt wurden (außer Webabfragen).

So starten Sie dieses Protokoll:

  • auf dem Server:
     SET DATABASE PARAMETER(4D Server log recording;1) //server side
  • auf einem Client:
     SET DATABASE PARAMETER(Client Log Recording;1) //remote side

Hinweis: Diese Anweisung startet auch die Protokolldatei 4DRequestsLog_ProcessInfo.txt (siehe unten).

Kopfzeilen

Diese Datei beginnt mit den folgenden Kopfzeilen:

  • Log Session Identifier
  • Hostname des Servers, der die Anwendung hostet
  • Benutzer-Login-Name: Login auf dem Betriebssystem des Benutzers, der die 4D Anwendung auf dem Server ausgeführt hat.

Inhalt

Für jede Anfrage werden die folgenden Felder protokolliert:

FeldnameBeschreibung
sequence_numberEindeutige und fortlaufende Vorgangsnummer in der Protokollierungssitzung
timeDatum und Uhrzeit im Format ISO 8601: 'YYYY-MM-DDTHH:MM:SS.mmm'
systemidSystem ID
componentKomponentensignatur (z. B. '4SQLS' oder 'dbmg')
process_info_indexEntspricht dem Feld "index" im Protokoll 4DRequestsLog_ProcessInfo.txt und ermöglicht die Verknüpfung einer Anfrage mit einem Prozess.
requestAnforderungs-ID in C/S oder Meldungsstring für SQL-Anforderungen oder LOG EVENT-Meldungen
bytes_inAnzahl der empfangenen Bytes
bytes_outAnzahl der gesendeten Bytes
server_duration | exec_duration Abhängig davon, wo das Protokoll generiert wird:
  • server_duration, wenn auf dem Client generiert - Zeit in Mikrosekunden, die der Server benötigt, um die Anfrage zu verarbeiten und eine Antwort zurückzugeben; B bis F in der Abbildung unten,
    Oder,
  • exec_duration, wenn auf dem Server generiert - Zeit in Mikrosekunden, die der Server benötigt, um die Anfrage zu verarbeiten; B bis E in der Abbildung unten.
write_durationZeit in Mikrosekunden für das Senden der:
  • Anfrage (wenn auf dem Client ausgeführt). A bis B in der Abbildung unten.
  • Antwort (wenn auf dem Server ausgeführt). E bis F im Bild unten.
task_kindPreemptiv oder kooperativ (jeweils 'p' oder 'c')
rttGeschätzte Zeit in Mikrosekunden, die der Client benötigt, um die Anfrage zu senden und der Server, um sie zu bestätigen. A bis D und E bis H im Bild unten.
  • Wird nur gemessen, wenn die ServerNet-Netzwerkschicht verwendet wird, gibt 0 zurück, wenn sie mit der Legacy-Netzwerkschicht verwendet wird.
  • Für Windows-Versionen vor Windows 10 oder Windows Server 2016 gibt der Aufruf 0 zurück.

Ablauf der Anfrage:

Diese Protokolldatei zeichnet Informationen über jeden Prozess auf, der auf dem 4D Server Rechner oder dem remote 4D Rechner, der den Befehl ausgeführt hat, erstellt wurde (mit Ausnahme von Web-Anfragen).

Wie Sie dieses Protokoll starten:

  • auf dem Server:
     SET DATABASE PARAMETER(4D Server log recording;1) //Serverseite
  • auf einem Client:
     SET DATABASE PARAMETER(Client Log Recording;1) //entfernte Seite

Hinweis: Diese Anweisung startet auch die Protokolldatei 4DRequestsLog.txt (siehe oben).

Kopfzeilen

Diese Datei beginnt mit den folgenden Kopfzeilen:

  • Log Session Identifier
  • Hostname des Servers, der die Anwendung hostet
  • User Login Name: Anmeldung am Betriebssystem des Benutzers, der die 4D Anwendung auf dem Server ausgeführt hat.

Inhalt

Für jeden Prozess werden die folgenden Felder protokolliert:

FeldnameBeschreibung
sequence_numberEindeutige und fortlaufende Vorgangsnummer in der Protokollierungssitzung
timeDatum und Uhrzeit im Format ISO 8601: "YYYY-MM-DDTHH:MM:SS.mmm"
process_info_indexEindeutige und fortlaufende Prozessnummer
CDB4DBaseContextDB4D-Komponente Datenbankkontext UUID
systemidSystem ID
server_process_idProzess-ID auf dem Server
remote_process_idProzess-ID auf Client
process_nameProzessname
cIDKennung der 4D Verbindung
uIDKennung des 4D Clients
IPClient IPv4/IPv6-Adresse
host_nameClient-Hostname
user_nameBenutzer-Login-Name auf dem Client
connection_uuidUUID-Bezeichner der Prozessverbindung
server_process_unique_idEindeutige Prozess-ID auf dem Server

Diese Protokolldatei zeichnet jede HTTP-Anfrage und jede Antwort im Raw-Modus auf. Es werden ganze Anfragen einschließlich Header protokolliert; optional können auch Body-Teile protokolliert werden.

So starten Sie dieses Protokoll:

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

Die folgenden Felder werden sowohl für die Anfrage als auch für die Antwort protokolliert:

FeldnameBeschreibung
SocketIDID des für die Kommunikation verwendeten Sockets
PeerIPIPv4-Adresse des Hosts (Client)
PeerPortVom Host verwendeter Port (Client)
TimeStampZeitstempel in Millisekunden (seit Systemstart)
ConnectionIDVerbindungs-UUID (UUID des für die Kommunikation verwendeten VTCPSockets)
SequenceNumberEindeutige und fortlaufende Vorgangsnummer in der Protokollierungssitzung

 

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
2Datum und Uhrzeit im Format ISO 8601: "YYYY-MM-DDThh:mm:ss.mmm"
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)

 

Diese Protokolldatei zeichnet jedes Ereignis, das auf der 4D Programmierebene auftritt, in einem tabellarischen, kompakten Format auf, das zusätzliche Informationen enthält (im Vergleich zum Standardformat).

So starten Sie dieses Protokoll:

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

Die folgenden Felder werden für jedes Ereignis protokolliert: 

Spalte #FeldnameBeschreibung
1sequence_numberEindeutige und fortlaufende Vorgangsnummer in der Protokollierungssitzung.
2timeDatum und Uhrzeit im Format ISO 8601: "YYYY-MM-DDThh:mm:ss.mmm"
3processIDProzess-ID
4unique_processIDEindeutige Prozess-ID
5stack_levelStack-Ebene
6operation_typeArt der Log-Operation. Dieser Wert kann ein absoluter Wert sein:
1: Befehl
2: Methode (Projektmethode, Datenbankmethode, etc.)
3: Meldung (nur vom Befehl LOG EVENT gesendet)
4: PluginMessage
5: PluginEvent
6: PluginCommand
7: PluginCallback
8: Task
9: Member Method (Methode, die einer Collection oder einem Objekt zugewiesen ist)
Beim Schließen einer Stack-Ebene haben die Operation operation_type und die Spalten operation_parameters denselben Wert wie die öffnende Stack-Ebene, die in der Spalte stack_opening_sequence_number protokolliert ist. Zum Beispiel:
121 15:16:50: 777 5 8 0 CallMethod 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 in der letzten Zeile (124) entspricht der Wert der 6. Spalte '121' der Sequenznummer der ersten Zeile (Stackebene 0). In der Zeile darüber (123) entspricht der Wert der 6. Spalte '122' der Sequenznummer der oberen Zeile (Stack-Level 1) usw.
7operationKann je nach Typ folgendes sein:
  • ID des Programmiersprachebefehls (bei Typ=1)
  • ein Methodenname (bei Typ=2)
  • eine Kombination aus pluginIndex;pluginCommand (bei Typ=4, 5, 6 oder 7). Kann sowas wie '3;2' enthalten
  • eine Task-Verbindungs-UUID (bei Typ=8)
  • 8operation_parametersParameter, die an Befehle, Methoden oder Plugins übergeben werden
    9form_eventFormularereignis, falls vorhanden; leer in anderen Fällen (angenommen, diese Spalte wird verwendet, wenn Code in einer Formular- oder Objektmethode ausgeführt wird)
    10stack_opening_sequence_numberNur für die schließenden Stack-Ebenen: Sequenznummer der entsprechenden öffnenden Stack-Ebene
    11stack_level_execution_timeNur für die schließenden Stack-Ebenen:Verstrichene Zeit in Mikrosekunden der aktuellen protokollierten Aktion (siehe letzte Spalten in den Zeilen 123 und 124 im obigen Protokoll)

     

    Diese Protokolldatei zeichnet viele Ereignisse im Zusammenhang mit dem internen Anwendungsbetrieb auf und ist für den Menschen lesbar. Sie können mit dem Befehl LOG EVENT benutzerdefinierte Informationen in diese Datei aufnehmen.

    So starten Sie dieses Protokoll:

     SET DATABASE PARAMETER(Diagnostic log recording;1) //Aufzeichnung starten

    Die folgenden Felder werden für jedes Ereignis protokolliert:

    FeldnameBeschreibung
    sequenceNumberEinmalige und fortlaufende Vorgangsnummer in der Protokollierungssitzung
    timestampDatum und Zeit in ISO 8601 Format (YYYY-MM-DDThh:mm:ss.mmm)
    loggerIDOptional
    componentSignatureOptional - interne Komponentensignatur
    messageLevelInfo, Warnung, Fehler
    messageBeschreibung des Protokolleintrags

    Je nach Ereignis können auch verschiedene andere Felder protokolliert werden, wie z. B. Task, Socket, etc. 

    Diese Protokolldateien zeichnen jeden Austausch zwischen der 4D Anwendung und dem Mailserver (SMTP, POP3, IMAP) auf, der durch die folgenden Befehle ausgelöst wurde:

    Die Protokolldateien können in zwei Versionen erstellt werden:

    • eine reguläre Version:
      • namens 4DSMTPLog.txt, 4DPOP3Log.txt oder 4DIMAPLog.txt
      • keine Anhänge
      • verwendet ein automatisches zirkuläres Dateirecycling alle 10 MB
      • ist für die übliche Fehlersuche vorgesehen

    So starten Sie dieses Protokoll:

      •  SET DATABASE PARAMETER(SMTP Log;1) //SMTP-Protokoll starten ODER
         SET DATABASE PARAMETER(POP3 Log;1) //POP3-Protokoll starten ODER
         SET DATABASE PARAMETER(IMAP Log;1) //IMAP-Protokoll starten

         
      • 4D Server: Klicken Sie auf die Schaltfläche Start Request and Debug Logs auf der Seite Wartung des 4D Server Administrationsfensters.
        Dieser Protokollpfad wird von dem Befehl Get 4D file zurückgegeben.
    • eine erweiterte Version:
      • Anhang enthalten
      • kein automatisches Recycling
      • benutzerdefinierter Name
      • für bestimmte Zwecke reserviert

    So starten Sie dieses Protokoll:

      •  $server:=New object
         ...
          //SMTP
         $server.logFile:="MySMTPAuthLog.txt"
         $transporter:=SMTP New transporter($server)
         
          // POP3
         $server.logFile:="MyPOP3AuthLog.txt"
         $transporter:=POP3 New transporter($server)
         
          //IMAP
         $server.logFile:="MyIMAPAuthLog.txt"
         $transporter:=IMAP New transporter($server)

    Inhalt

    Für jede Anfrage werden die folgenden Felder protokolliert:

    Spalte #Beschreibung
    1Eindeutige und fortlaufende Vorgangsnummer in der Protokollierungssitzung
    2Datum und Uhrzeit im RFC3339-Format (jjjj-mm-ddThh:mm:ss.ms)
    34D Prozess-ID
    4Eindeutige Prozess-ID
    5
    • SMTP-, POP3- oder IMAP-Sitzungsstartinformationen, einschließlich des Server-Hostnamens, der TCP-Portnummer, die für die Verbindung zum SMTP-, POP3- oder IMAP-Server verwendet wird, und des TLS-Status,
      oder
    • zwischen Server und Client ausgetauschte Daten, beginnend mit "S <" (vom SMTP-, POP3- oder IMAP-Server empfangene Daten) oder "C >" (vom IMAP-Client gesendete Daten): Liste der vom Server gesendeten Authentifizierungsmodi und gewählter Authentifizierungsmodus, alle vom SMTP-, POP3- oder IMAP-Server gemeldeten Fehler, Header-Informationen der gesendeten Mail (nur Standardversion) und ob die Mail auf dem Server gespeichert wurde,
      oder
    • IMAP-Sitzungsabschlussinformationen.

    Dieses Protokoll zeichnet jede ORDA-Anfrage auf, die von einem Remote Rechner gesendet wird. Sie können die Protokollinformationen in den Speicher oder in eine Datei auf der Festplatte leiten. Der Name und der Speicherort dieser Protokolldatei sind frei wählbar.

    Wie Sie dieses Protokoll starten:

      //zur Ausführung auf einem Remote Rechner
     ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt")) //kann auch an den Speicher gesendet werden

    Hinweis: Wenn Sie die eindeutige Sequenznummer im ORDA-Anforderungsprotokoll verwenden möchten, müssen Sie sie auslösen:

      //zur Ausführung auf einem Remote Rechner
     SET DATABASE PARAMETER(Client Log Recording;1) //zur Aktivierung der Log-Sequenznummer
     ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt")) //kann auch in den Speicher gesendet werden
     SET DATABASE PARAMETER(Client Log Recording;0) //Sequenznummer deaktivieren

    Die folgenden Felder werden für jede Anfrage protokolliert:

    FeldnameBeschreibungBeispiel
    sequenceNumberEindeutige und fortlaufende Vorgangsnummer in der Protokollierungssitzung104
    urlClient-ORDA-Anfrage-URL"rest/Persons(30001)"
    startTimeStartdatum und -zeit im ISO 8601-Format"2019-05-28T08:25:12.346Z"
    endTimeEnddatum und -zeit im ISO 8601-Format"2019-05-28T08:25:12.371Z"
    durationClient-Bearbeitungsdauer (ms)25
    responseServer-Antwortobjekt{"status":200,"body":{"__entityModel":"Persons",[...]

     
    EIGENSCHAFTEN 

    Produkt: 4D
    Thema: Debug-Logbücher

     
    SEITENINHALT 
     
    GESCHICHTE 

    New
    Geändert: 4D v17 R5
    Geändert: 4D v17 R6
    Geändert: 4D v18 R2
    Geändert: 4D v18 R3
    Geändert: 4D v19

     
    ARTIKELVERWENDUNG

    4D Designmodus ( 4D v19)