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.log dans 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 :

GestionnaireEnregistre dans BSPK_ERROREnvoie le mail d'erreurDialoguePour
BSPK_ERROR_HANDLERouiouioui (sauf pour les assertions) ; l'utilisateur peut annuler l'opérationles process avec une interface
BSPK_ERROR_SILENTouiouinonles process serveur, les workers, les traitements par lots
BSPK_ERROR_MUTEDnonnonnonles 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_VARIABLES de 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 counter du 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_TEST des versions précédentes n'existe plus en version 21. Pour tester un gestionnaire, provoquez une erreur vous-même, par exemple ON ERR CALL("BSPK_ERROR_SILENT") puis ASSERT(False).

Où partent les mails d'erreur

Les gestionnaires envoient leurs mails par BSPK_ERRO_SEND_MAIL, avec le serveur de vo_Mail :

ChampValeur
Expéditeurvo_Mail.vt_User
Destinatairevo_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