4D v18

Description des fichiers d'historique

Accueil

 
4D v18
Description des fichiers d'historique

Description des fichiers d'historique  


 

 

Les applications 4D peuvent générer divers fichiers d'historique (logs) utiles pour le débogage ou l'optimisation de l'exécution des bases. Les fichiers d'historique sont généralement démarrés ou stoppés à l'aide des sélecteurs des commandes SET DATABASE PARAMETER ou WEB SET OPTION et sont stockés dans le dossier Logs de la base (cf.section Description des fichiers de 4D).

Il est nécessaire d'analyser les informations enregistrées afin de pouvoir détecter et corriger les problèmes. Cette annexe fournit une description complète des fichiers suivants :

  • 4DRequestsLog.txt
  • 4DRequestsLog_ProcessInfo.txt
  • HTTPDebugLog.txt
  • 4DDebugLog.txt
  • 4DSMTPLog.txt
  • Fichier d'historique des requêtes ORDA clientes

Certains champs de ces fichiers sont communs afin de vous permettre de reconstituer la chronologie des événements et d'établir des connexions entre les entrées lors du débogage :

  • sequence_number : ce numéro est unique parmi tous les fichiers d'historique de débogage et est incrémenté à chaque nouvelle entrée, quel que soit le fichier d'historique, de manière à ce que vous puissiez connaître la séquence exacte des opérations.
  • connection_uuid : pour chaque process 4D créé sur un client 4D qui se connecte au serveur, cet UUID de connexion est stocké à la fois côté serveur et client. Il vous permet d'identifier facilement le client distant qui a lancé le process.

Ce fichier d'historique enregistre les requêtes standard effectuées par la machine 4D Server ou la machine 4D distante qui a exécuté la commande (à l'exclusion des requêtes Web).

Comment démarrer ce fichier d'historique :

  • sur le serveur :
     SET DATABASE PARAMETER(Enreg requêtes 4D Server;1) //côté serveur
  • sur un client :
     SET DATABASE PARAMETER(Enreg requêtes client;1) //côté distant

Note : Cette instruction génère aussi le fichier d'historique 4DRequestsLog_ProcessInfo.txt (voir ci-dessous).

En-têtes

Ce fichier commence par les en-têtes suivants :

  • Log Session Identifier (Identifiant de session d'historique)
  • Nom du serveur qui héberge l'application
  • User Login Name : Nom de l'utilisateur (défini dans l'OS) qui exécute l'application 4D sur le serveur.

Contenu du fichier

Pour chaque requête, les champs suivants sont enregistrés :

Nom du champDescription
sequence_numberNuméro d'opération séquentiel et unique dans la session d'historique
timeDate et heure au format ISO 8601 : 'YYYY-MM-DDTHH:MM:SS.sss'
systemidID système
componentSignature du composant (par exemple '4SQLS' ou 'dbmg')
process_info_indexCorrespond au champ "index" dans le fichier d'historique 4DRequestsLog_ProcessInfo.txt, permettant de relier une requête à un process
requestID de requête en mode distant chaîne de message pour les requêtes SQL ou messages LOG EVENT
bytes_inNombre d'octets reçus
bytes_outNombre d'octets envoyés
server_duration | exec_duration Dépend de l'endroit où l'historique est généré :
  • server_duration lorsqu'il est généré sur le client --Temps en microsecondes pris par le serveur pour traiter la requête et retourner une réponse. Correspond au chemin B vers F dans l'image ci-dessous,
    OU,
  • exec_duration  lorsqu'il est généré sur le serveur --Temps en microsecondes pris par le serveur pour traiter la requête. Correspond au chemin B vers F dans l'image ci-dessous.
write_durationTemps en microsecondes pour envoyer :
  • La requête (lorsqu'elle est exécutée sur le client). Correspond au chemin A vers B dans l'image ci-dessous.
  • La réponse (lorsqu'elle est exécutée sur le serveur). Correspond au chemin E vers F dans l'image ci-dessous.
task_kindPréemptif ou coopératif (respectivement 'p' ou 'c')
rttTemps en microsecondes pris par  le client pour envoyer la requête et pour qu'elle soit reçue par le serveur. Correspond respectivement aux chemins A vers D et E vers H dans l'image ci-dessous.
  • Mesuré uniquement lorsque la couche réseau ServerNet est utilisée, retourne 0 lorsque l'ancienne couche réseau est utilisée.
  • Dans les versions antérieures à Windows 10 ou à Windows Server 2016, l'appel retournera la valeur 0.

Acheminement de la requête :

Ce fichier d'historique enregistre des informations sur chaque process créé sur la machine de 4D Server ou la machine 4D distante qui a exécuté la commande (à l'exclusion des requêtes Web).

Comment démarrer ce fichier d'historique :

  • sur le serveur :
     SET DATABASE PARAMETER(Enreg requêtes 4D Server;1) //côté serveur
  • sur un client :
     SET DATABASE PARAMETER(Enreg requêtes client;1) //côté distant

Note : Cette instruction génère aussi le fichier d'historique 4DRequestsLog.txt (voir ci-dessous).

En-têtes

Ce fichier commence par les en-têtes suivants :

  • Log Session Identifier (Identifiant de session d'historique)
  • Nom du serveur qui héberge l'application
  • User Login Name : Nom de l'utilisateur (défini dans l'OS) qui exécute l'application 4D sur le serveur.

Contenu du fichier

Pour chaque requête, les champs suivants sont enregistrés :

Nom du champDescription
sequence_numberNuméro d'opération séquentiel et unique dans la session d'historique
timeDate et heure au format ISO 8601 : "YYYY-MM-DDTHH:MM:SS.sss"
process_info_indexNuméro de process séquentiel et unique
CDB4DBaseContextUUID du contexte de base du composant DB4D
systemidID système
server_process_idID du process sur le serveur
remote_process_idID du process sur le client
process_nameNom du process
cIDIdentifiant de la connexion 4D
uIDIdentifiant du client 4D
IPAddresse IPv4/IPv6 du client
host_nameNom d'hôte du client
user_nameNom de connexion utilisateur sur le client
connection_uuidIdentifiant UUID de process de connexion
server_process_unique_idID unique du process sur le serveur

Ce fichier d'historique enregistre chaque requête HTTP et chaque réponse en mode brut (raw). La totalité des requêtes, en-têtes compris, est enregistrée ; optionnellement, le corps (body) des requêtes peut également être enregistré.

Comment démarrer ce fichier d'historique :

 WEB SET OPTION(Web debug log;wdl enable without body//d'autres valeurs sont disponibles

Les champs suivants sont enregistrés pour les requêtes et les réponses :

Nom du champDescription
SocketIDID de la socket utilisée pour la communication
PeerIPAdresse IPv4 de l'hôte (client)
PeerPortPort utilisé par l'hôte (client)
TimeStampHorodatage en millisecondes (depuis le démarrage du système)
ConnectionIDUUID de la connexion (UUID de la VTCPSocket utilisée pour la communication)
SequenceNumberNuméro d'opération séquentiel et unique dans la session d'historique

Ce fichier d'historique enregistre chaque événement généré au niveau du langage de 4D. Le mode standard propose une vue basique des événements.

Comment démarrer ce fichier d'historique :

 SET DATABASE PARAMETER(Enregévénements debogage;2) //standard, tous les process
 SET DATABASE PARAMETER(Enreg historique du process courant;2) //standard, process courant uniquement

Les champs suivants sont enregistrés pour chaque événement :  

ColonneDescription
1Numéro d'opération séquentiel et unique dans la session d'historique
2Temps écoulé en millisecondes à compter du démarrage du fichier d'historique
3ID process (p=xx) et ID unique process (puid=xx)
4Niveau de stack
5Peut être Nom de commande / Nom de méthode / Message / Info Start Stop task / Nom, événement ou callback plugin / UUID connexion
6Durée de l'opération d'enregistrement dans l'historique en millisecondes (différent 2e colonne)

Ce fichier d'historique enregistre chaque événement généré au niveau du langage de 4D. Le mode tabulaire est plus compact et contient davantage d'informations que le mode standard.

Comment démarrer ce fichier d'historique :

 SET DATABASE PARAMETER(Enregévénements debogage;2+4) //format tabulaire étendu, tous les process
 SET DATABASE PARAMETER(Enreg historique débogage du process courant;2+4) // étendu, process courant uniquement

Les champs suivants sont enregistrés pour chaque événement :  

ColonneDescription
1Numéro d'opération séquentiel et unique dans la session d'historique
2Temps écoulé à compter du démarrage du fichier d'historique au format "hh:mm:ss:ms" (peut être précédé par un compteur de jours. Par exemple, si l'historique a été démarré il y a 3 jours, le temps pourrait être "3+11:58:23:163")
3ID du process
4ID unique du process
5Niveau de stack
6Peut représenter (en fonction du type d'entrée enregistré dans la 8e colonne) :
  • un ID de commande du langage (lorsque le type=1)
  • un nom de méthode (lorsque le type=2)
  • une combinaison de pluginIndex;pluginCommand (lorsque le type=4, 5, 6 ou 7). Peut contenir une valeur telle que '3;2'
  • un UUID de process de connexion (lorsque le type=8)
  • ou 'starting sequence number' lors de la fermeture d'un niveau de stack (doit correspondre au numéro de séquence du démarrage de l'action courante)
  • 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
    Ici dans la dernière ligne (124), la valeur de la 6e colonne '121' correspond au numéro de séquence de la première ligne (stack niveau 0). Dans la ligne du dessus (123), la valeur de la 6e colonne '122' correspond au numéro de séquence de la ligne du dessus (stack niveau 1) etc.
    7Paramètres passés aux commandes, méthodes ou plug-ins
    8Type d'opération d'historique. Il peut s'agir d'une valeur absolue:
    1: Commande
    2: Méthode (méthode projeet, méthode base, etc.)
    3: Message (envoyé par la commande LOG EVENT uniquement)
    4: PluginMessage
    5: PluginEvent
    6: PluginCommand
    7: PluginCallback
    8: Process (Task)
    9:Méthode membre (méthode rattachée à une collection ou à un objet)
    Lorsqu'une valeur est négative, cela signifie simplement qu'il s'agit de la contrepartie de la fermeture d'un niveau de stack (cf. 8e colonne des lignes 123 et 124 dans l'historique ci-dessus).
    9Evénement formulaire, le cas échéant ; vide dans les autres cas (par conséquent cette colonne est utilisée lorsque le code est exécuté dans une méthode formulaire ou méthode objet)
    10Durée en micro secondes de l'action enregistrée courante ; uniquement pour les niveaux de femeture de stack (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus)

    Ce fichier d'historique enregistre chaque échange entre l'application 4D et le serveur SMTP. Le fichier peut être généré en deux versions :

    • une version standard : nommé 4DSMTPLog.txt, sans pièces jointes, utilise un système de recyclage circulaire automatique des fichiers tous les 10 Mo ; destiné à un débogage basique.
      Pour démarrer cet historique :
      •  SET DATABASE PARAMETER(SMTP Log;1) //démarrer l'historique smtp
      • 4D Server : Cliquez sur le bouton Démarrer les journaux des requêtes et de débogage dans la Page Maintenance de la fenêtre d'administration de 4D Server.
      Ce chemin d'historique est retourné par la commande Get 4D file.
    • une version étendue : pièce(s) jointe(s) incluse(s), pas de recyclage automatique ; destiné à des fins spécifiques.
      Pour démarrer cet historique :
       $server:=New object 
       ... 
       $server.logFile:="MySMTPAuthLog.txt" 
       $transporter:=SMTP New transporter($server)

    Contenus

    Pour chaque requête, les champs suivants sont enregistrés :

    Colonne #Description
    1Numéro d'opération séquentiel et unique dans la session d'historique
    2Date et heure au format RFC3339 (yyyy-mm-ddThh:mm:ss.ms)
    3ID du process 4D
    4ID unique du process
    5
    • Informations sur le lancement de la session SMTP, y compris le nom d'hôte du serveur, le numéro du port TCP utilisé pour connecter le serveur SMTP et le statut du TLS,
      ou
    • Données échangées entre le serveur et le client, commençant par "S <" (données reçues par le serveur SMTP) ou "C >" (données envoyées par le client SMTP) : liste des modes d'authentification envoyée par le serveur et mode d'authentification sélectionné, erreurs éventuelles reportées par le serveur SMTP, informations sur l'en-tête de l'e-mail envoyé (version standard uniquement) et indication si l'e-mail est enregistré sur le serveur,
      ou
    • Informations MIME de tous les e-mails envoyés* (version étendue uniquement),
      ou
    • Informations sur la fermeture de la session SMTP.

    *Attention : Le contenu MIME (pièces jointes) peut comporter un nombre important de données. Assurez-vous d'avoir suffisamment d'espace disque pour les enregistrer.

    Ce fichier d'historique enregistre toutes les requêtes ORDA envoyées depuis une machine distante. Vous pouvez les envoyer à la mémoire ou à un fichier sur disque. Il vous revient de choisir le nom et l'emplacement de ce fichier d'historique. 

    Comment démarrer ce fichier d'historique :

      //à exécuter sur une machine distante
     ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt")) //peut aussi être envoyé à la mémoire

    Note : Si vous souhaitez utiliser une numérotation automatique unique dans le fichier d'historique ORDA, vous devez le lancer :

      //à exécuter sur une machine distante
     SET DATABASE PARAMETER(Enreg requêtes client;1) //pour activer la numérotation automatique de l'historique
     ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt")) //peut aussi être envoyé à la mémoire
     SET DATABASE PARAMETER(Enreg requêtes client;0) //désactive la numérotation automatique

    Les champs suivants sont enregistrés pour chaque requête :

    Nom du champDescriptionExemple
    sequenceNumberNuméro d'opération séquentiel et unique dans la session d'historique104
    urlURL de la requête ORDA effectuée par le poste client"rest/Persons(30001)"
    startTimeDate et heure de début au format ISO 8601"2019-05-28T08:25:12.346Z"
    endTimeDate et heure de fin au format ISO 8601"2019-05-28T08:25:12.371Z"
    durationDurée de traitement client (ms)25
    responseObjet réponse du serveur{"status":200,"body":{"__entityModel":"Persons",[...]

     
    PROPRIÉTÉS 

    Produit : 4D
    Thème : Fichiers d'historique d'aide au débogage

     
    PAGE CONTENTS 
     
    HISTORIQUE 

    Modifié : 4D v17 R5
    Modifié : 4D v17 R6

     
    UTILISATION DE L'ARTICLE

    4D - Mode Développement ( 4D v18)