Enregistrer les informations d’exception

Les chapitres précédents présentaient l’enregistrement de contenus personnalisés. Log4net permet aussi de consigner les exceptions ainsi que leur pile d’appel complète, ce qui aide les développeurs à diagnostiquer les problèmes.

try
{
    int b = 0;
    int a = 100 / b;
}
catch (Exception ex)
{
    log.Error(ex.Message, ex);
}Langage du code : PHP (php)
  1. Déclenchement de l’exception : 100 / b. La variable b=0 provoque une DivideByZeroException (division par zéro).
  2. Capture de l’exception : catch (Exception ex) intercepte toutes les exceptions qui héritent de Exception.
  3. Écriture clé du journal : log.Error(ex.Message, ex);
    • Premier paramètre : message de log personnalisé (ici le court descriptif de l’exception ex.Message)
    • Le deuxième paramètre doit absolument être l’objet exception ex
    • Lorsque log4net détecte que le second paramètre est une instance Exception, ilaffiche automatiquement la pile d’appel complète (StackTrace) avec l’emplacement de l’erreur et la chaîne d’appels.
Mauvaise pratique : la pile ne s’affichera pas
//  On ne passe qu’une chaîne : perte de la pile d’appel !
log.Error(ex.ToString());
log.Error(ex.Message);Langage du code : JavaScript (javascript)

Cette méthode ne renvoie que le texte de l’exception. Certains formats de journal n’étendent pas automatiquement la pile d’appel, ce qui complique le débogage.

Bonne pratique recommandée
//  Recommandé : ajouter un contexte métier puis transmettre l’objet exception
log.Error("Une erreur est survenue pendant le calcul de division", ex);Langage du code : JavaScript (javascript)

Enregistrer les informations d’exception

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *