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)
- Déclenchement de l’exception :
100 / b. La variableb=0provoque uneDivideByZeroException(division par zéro). - Capture de l’exception :
catch (Exception ex)intercepte toutes les exceptions qui héritent deException. - É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.
- Premier paramètre : message de log personnalisé (ici le court descriptif de l’exception
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
Previous: Fichier de configuration séparé