Erreurs et journal
Ce que le composant met à disposition de votre code pour intercepter, enregistrer et signaler les erreurs 4D, et pour tracer ce qui se passe là où le débogueur n'arrive pas : requêtes web, workers, tâches planifiées.
Le journal : BSPK_LOG
BSPK_LOG("Commande.valider"; "refusée"; $vo_POST; $Commande)
- Jusqu'à 9 valeurs de tout type, écrites sur une ligne :
[horodatage] v1 : v2 : …. Objets et collections sont écrits en JSON, les entités et sélections d'entités converties d'abord. - Fichier :
Logs/bspk.logdans le dossier des données, créé s'il manque. Utilisable depuis votre projet comme depuis un worker. - Pas de niveaux, pas de rotation, et le fichier est supprimé à chaque démarrage. C'est un outil de diagnostic, pas un journal permanent : copiez le fichier avant de redémarrer si vous en avez besoin.
- C'est la seule trace disponible dans une requête web : voir Dépannage.
Les trois gestionnaires d'erreurs
À installer par ON ERR CALL dans un process :
| Gestionnaire | Enregistre dans BSPK_ERROR | Envoie le mail d'erreur | Dialogue | Pour |
|---|---|---|---|---|
BSPK_ERROR_HANDLER | oui | oui | oui (sauf pour les assertions) ; l'utilisateur peut annuler l'opération | les process avec une interface |
BSPK_ERROR_SILENT | oui | oui | non | les process serveur, les workers, les traitements par lots |
BSPK_ERROR_MUTED | non | non | non | les erreurs connues qui ne doivent ni interrompre ni alerter |
ON ERR CALL("BSPK_ERROR_SILENT")
// … traitement serveur …
ON ERR CALL("")
BSPK_ERROR_HANDLER et BSPK_ERROR_SILENT :
- recueillent la pile d'erreurs, la méthode, la ligne et la formule, le contexte web quand il y en a un (URL, en-têtes, session) et la chaîne d'appels. Ils s'appuient pour cela sur la méthode
BSPH_GET_ERROR_VARIABLESde votre projet : ne la supprimez pas ; - dédoublonnent : la même erreur (même code, méthode, ligne, formule et machine) dans la minute qui suit ne crée pas de nouvel enregistrement, elle incrémente le compteur
counterdu précédent, et le mail n'est pas renvoyé s'il est déjà parti.
BSPK_ERROR_MUTED se contente de passer la variable process vb_Erro_Silent à vrai : testez-la après l'instruction qui pouvait échouer.
En mode DEV
Les process du composant installent BSPK_ERROR_HANDLER, sauf en mode DEV, où ils laissent la main au débogueur de 4D, à moins que vo_Param.vb_erroHandler soit vrai (voir Les fichiers de paramètres). Conséquence : une erreur vue en production peut n'avoir jamais été enregistrée sur le poste de développement. Le bouton Trace du dialogue d'erreur n'apparaît qu'en mode DEV, en interprété.
La méthode de test
BSPK_ERROR_TESTdes versions précédentes n'existe plus en version 21. Pour tester un gestionnaire, provoquez une erreur vous-même, par exempleON ERR CALL("BSPK_ERROR_SILENT")puisASSERT(False).
Où partent les mails d'erreur
Les gestionnaires envoient leurs mails par BSPK_ERRO_SEND_MAIL, avec le serveur de vo_Mail :
| Champ | Valeur |
|---|---|
| Expéditeur | vo_Mail.vt_User |
| Destinataire | vo_RedirectMapping[<nom de la machine>], sinon vt_RedirectMail s'il n'est pas vide, sinon vo_Mail.vt_Forwarder. La redirection s'applique dans tous les modes, production comprise. |
| Sujet | [<application>]Erreur sur <application> |
Les erreurs de cet envoi sont elles-mêmes muettes : un réglage SMTP faux échoue sans bruit. Testez l'envoi d'un mail d'erreur après avoir configuré un serveur.
Voir aussi
- Les fichiers de paramètres :
vo_Mail, les redirections - La classe Mail
- Dépannage

