Description des fichiers d'historique
Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Les fichiers d'historique sont généralement démarrés ou arrêtés via des sélecteurs des commandes SET DATABASE PARAMETER ou WEB SET OPTION et sont stockés dans le dossier Logs du projet.
Les informations stockées dans les journaux doivent être analysées pour détecter et corriger les problèmes. Cette section fournit une description complète des fichiers journaux suivants :
- 4DRequestsLog.txt
- 4DRequestsLog_ProcessInfo.txt
- HTTPDebugLog.txt
- 4DDebugLog.txt (standard & tabular)
- 4DDiagnosticLog.txt
- 4DIMAPLog.txt
- 4DPOP3Log.txt
- 4DSMTPLog.txt
- Fichier d'historique des requêtes ORDA clientes
Lorsqu'un fichier d'historique peut être généré soit sur 4D Server, soit sur le client distant, le mot "Server" est ajouté au nom du fichier d'historique côté serveur, par exemple " 4DRequestsLogServer.txt"
Les fichiers journaux partagent certains champs, ce qui vous permet d'établir une chronologie et de faire des connexions entre les entrées lors du débogage :
sequence_number
: ce numéro est unique parmi tous les fichiers journaux de débogage et est incrémenté à chaque nouvelle entrée, quel que soit le fichier journal, 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.
4DRequestsLog.txt
Ce fichier de log enregistre les requêtes standard envoyées par la machine du 4D Server, ou la machine à distance qui a exécuté la commande (hors requêtes web).
Pour lancer ce journal :
- sur le serveur :
SET DATABASE PARAMETER(4D Server log recording;1)
//côté serveur
- sur le client :
SET DATABASE PARAMETER(Client Log Recording;1)
//côté distant
Cette instruction démarre également le fichier 4DRequestsLog_ProcessInfo.txt.
En-têtes
Ce fichier commence avec 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 a exécuté l'application 4D sur le serveur.
Contenu
Pour chaque requête, les champs suivants sont enregistrés :
Noms des champs | Description |
---|---|
sequence_number | Numéro d'opération séquentiel et unique dans la session de log |
time | Date et heure au format ISO 8601 : 'YYYY-MM-DDTHH:MM:SS.mmm' |
systemid | ID système |
component | Signature du composant (par exemple '4SQLS' ou 'dbmg') |
process_info_ | index Corresponds to the "index" field in 4DRequestsLog_ProcessInfo.txt log, and permits linking a request to a process. |
request | ID de requête en mode distant chaîne de message pour les requêtes SQL ou messages LOG EVENT |
bytes_in | Nombre d'octets reçus |
bytes_out | Nombre d'octets envoyés |
server_duration | exec_duration | Dépend de l'endroit où l'historique est généré : |
write_duration | Temps en microsecondes pour envoyer : |
task_kind | Préemptif ou coopératif (respectivement 'p' ou 'c') |
rtt | Temps 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. |
Acheminement de la requête :
4DRequestsLog_ProcessInfo.txt
Ce fichier de log enregistre des informations sur chaque process créé sur la machine du 4D Server, ou la machine à distance qui a exécuté la commande (requêtes web exclues).
Pour lancer ce journal :
- sur le serveur :
SET DATABASE PARAMETER(4D Server log recording;1) //côté serveur
- sur le client :
SET DATABASE PARAMETER(Client Log Recording;1) //côté distant
Cette déclaration démarre également l'historique du fichier 4DRequestsLog.txt.
En-têtes
Ce fichier commence avec 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 a exécuté l'application 4D sur le serveur.
Contenu
Pour chaque process, les champs suivants sont enregistrés :
Noms des champs | Description |
---|---|
sequence_number | Numéro d'opération séquentiel et unique dans la session de log |
time | Date et heure au format ISO 8601 : "YYYY-MM-DDTHH:MM:SS.mmm" |
process_info_index | Numéro de process séquentiel et unique |
CDB4DBaseContext | UUID du contexte de base du composant DB4D |
systemid | ID système |
server_process_id | ID du process sur le serveur |
remote_process_id | ID du process sur le client |
process_name | Nom du process |
cID | Identifiant de la connexion 4D |
uID | Identifiant du client 4D |
IP Client | Addresse IPv4/IPv6 du client |
host_name | Nom d'hôte du client |
user_name | Nom de connexion utilisateur sur le client |
connection_uuid | Identifiant UUID de process de connexion |
server_process_unique_id | ID unique du process sur le serveur |
HTTPDebugLog.txt
Ce fichier journal enregistre chaque requête HTTP et chaque réponse en mode brut (raw). Les requêtes sont enregistrées dans leur totalité (en-têtes compris). Les parties body peuvent également être enregistrées.
Pour lancer ce journal :
WEB SET OPTION(Web debug log;wdl enable without body)
//d'autres valeurs sont disponibles
Les champs suivants sont enregistrés pour Requête et Réponse :
Noms des champs | Description |
---|---|
SocketID | ID du socket utilisé pour la communication |
PeerIP | Adresse IPv4 de l'hôte (client) |
PeerPort | Port utilisé par l'hôte (client) |
TimeStamp | Horodatage en millisecondes (depuis le démarrage du système) |
ConnectionID | Connexion UUID (UUID du VTCPSocket utilisé pour la communication) |
SequenceNumber | Numéro d'opération séquentiel et unique dans la session de log |
4DDebugLog.txt (standard)
Ce fichier journal enregistre chaque évènement qui a lieu au niveau de la programmation 4D. Le mode standard offre une vue d'ensemble des évènements.
Pour lancer ce journal :
SET DATABASE PARAMETER(Debug Log Recording;2)
//standard, tous les process
SET DATABASE PARAMETER(Current process debug log recording;2)
//standard, process courant uniquement
Les champs suivants sont enregistrés pour chaque évènement :
Colonne # | Description |
---|---|
1 | Numéro d'opération séquentiel et unique dans la session de log |
2 | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) |
3 | ID process (p=xx) et ID unique process (puid=xx) |
4 | Niveau de stack (pile) |
5 | Peut être Nom de commande / Nom de méthode / Message / Info Start Stop task / Nom, événement ou callback plugin / UUID connexion |
6 | Durée de l'opération de connexion en millisecondes (différent 2e colonne) |
4DDebugLog.txt (tabulé)
Ce fichier de logs enregistre chaque évènement au niveau de la programmation 4D sous un format compact avec des tabulations, qui inclut des informations supplémentaires par rapport au format standard.
Pour lancer ce journal :
SET DATABASE PARAMETER(Debug Log Recording;2+4)
//format tabulé étendu, tous les process
SET DATABASE PARAMETER(Current process debug log recording;2+4)
//étendu, process courant uniquement
Les champs suivants sont enregistrés pour chaque évènement :
Colonne # | Noms des champs | Description |
---|---|---|
1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log |
2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) |
3 | ProcessID | ID du process |
4 | unique_processID | ID unique du process |
5 | stack_level | Niveau de stack (pile) |
6 | operation_type | Type d'opération enregistrée. Il peut s'agir d'une valeur absolue :
operation_type , operation et operation_parameters ont la même valeur que le niveau de stack d'ouverture enregistré dans la colonne stack_opening_sequence_number . Par exemple :
|
7 | operation | Peut représenter (en fonction du type d'opération) : |
8 | operation_parameters | Paramètres passés aux commandes, méthodes ou aux plugins |
9 | form_event | Evé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) |
10 | stack_opening_sequence_number | Niveaux de fermeture de stacks uniquement : numéro de séquence du niveau d'ouverture de stack correspondant |
11 | stack_level_execution_time | Niveaux de fermeture de stacks uniquement : Durée en micro secondes de l'action enregistrée courante (cf. 10e colonne des lignes 123 et 124 dans l'historique ci-dessus) |
4DDiagnosticLog.txt
Ce fichier journal enregistre de nombreux événements liés au fonctionnement interne de l'application et est lisible par un humain. Vous pouvez inclure des informations personnalisées dans ce fichier à l'aide de la commande LOG EVENT.
Pour lancer ce journal :
SET DATABASE PARAMETER(Diagnostic log recording;1) //lancer l'enregistrement
Les champs suivants sont enregistrés pour chaque évènement :
Nom des champs | Description |
---|---|
sequenceNumber | Numéro d'opération séquentiel et unique dans la session de log |
timestamp | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) |
loggerID | Optionnel |
componentSignature | Optionnel - signature de composant interne |
messageLevel | Info, Attention, Erreur |
message | Description de la saisie de journal |
En fonction de l'événement, d'autres champs peuvent également être enregistrés, tels que task, socket, etc.
4DSMTPLog.txt, 4DPOP3Log.txt, et 4DIMAPLog.txt
Ces fichiers journaux enregistrent chaque échange entre l'application 4D et le serveur de mail (SMTP, POP3, IMAP) initialisé par les commandes suivantes :
- SMTP - SMTP New transporter
- POP3 - POP3 New transporter
- IMAP - IMAP New transporter
Les fichiers peuvent être générés en deux versions :
- une version classique :
- fichiers nommés 4DSMTPLog.txt, 4DPOP3Log.txt, ou 4DIMAPLog.txt
- sans pièces jointes
- avec un recyclage automatique tous les 10 MB
- conçue pour des fonctions de débogage habituelles
Pour démarrer ce journal :
SET DATABASE PARAMETER(SMTP Log;1) //start SMTP log
SET DATABASE PARAMETER(POP3 Log;1) //start POP3 log
SET DATABASE PARAMETER(IMAP Log;1) //start IMAP log
4D Server : Cliquez sur le bouton Démarrer les journaux de requêtes et de débogage dans la Page Maintenance de la fenêtre d'administration de 4D Server.
Ce chemin d'accès au journal est retourné par la commande Get 4D file
.
- une version étendue :
- pièce(s) jointe(s) inclue(s) pas de recyclage automatique
- nom personnalisé
- réservée à des fins spécifiques
Pour démarrer ce journal :
$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)
Contenu
Pour chaque requête, les champs suivants sont enregistrés :
Colonne # | Description |
---|---|
1 | Numéro d'opération séquentiel et unique dans la session de log |
2 | Date et heure au format RFC3339 (yyyy-mm-ddThh:mm:ss.ms) |
3 | ID du Process 4D |
4 | ID unique du process |
5 |
|
Requêtes client ORDA
Ce journal enregistre chaque requête ORDA envoyée depuis une machine distante. Vous pouvez diriger les informations du journal vers la mémoire ou vers un fichier sur le disque. Vous pouvez choisir le nom et l'emplacement de ce fichier journal.
Pour lancer ce journal :
//à exécuter sur une machine distante
ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt"))
//peut aussi être envoyé à la mémoire
Si vous souhaitez utiliser le numéro de séquence unique dans l'historique de requêtes ORDA, vous devez l'activer :
// à exécuter sur une machine distante
SET DATABASE PARAMETER(Client Log Recording;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(Client Log Recording;0)
//désactive la numérotation automatique
Les champs suivants sont enregistrés pour chaque requête :
Noms des champs | Description | Exemple |
---|---|---|
sequenceNumber | Numéro d'opération séquentiel et unique dans la session de log | 104 |
url | URL de la requête ORDA effectuée par le poste client | "rest/Persons(30001)" |
startTime | Date et heure de début au format ISO 8601 | "2019-05-28T08:25:12.346Z" |
endTime | Date et heure de fin au format ISO 8601 | "2019-05-28T08:25:12.371Z" |
duration | Durée de traitement client (ms) | 25 |
response | Objet réponse du serveur | {"status":200,"body":{"__entityModel":"Persons",[...] |