Quelle est la différence entre log4net et ELMAH?

Certaines personnes utilisent ELMAH au lieu de log4net. Qu’est-ce qui le rend meilleur?

J’ai découvert ELMAH dans une réponse à la question de Stack Overflow. Comment puis-je me connecter en C #?

ELMAH permet de suivre les erreurs et les exceptions pour vos applications Web et vous permet de vous connecter ou de visualiser facilement ces exceptions via différents mécanismes (SQL, RSS, Twitter, fichiers, e-mail, etc.). Si vous ne possédez pas de gestion des exceptions intégrée, ELMAH vous apportera probablement ce que vous recherchez en termes de gestion des exceptions dans un environnement d’application Web.

Log4net peut également être utilisé pour la journalisation des exceptions, mais vous devrez peut-être déployer vos propres gestionnaires pour vous connecter à votre application Web. Log4net brillera sur ELMAH si vous devez effectuer d’autres types de journalisation des informations car log4net est une structure de journalisation à usage général. Log4net peut également être utilisé dans presque toutes les applications .NET.

Log4Net est une infrastructure de journalisation à usage général avec une API destinée à être utilisée dans votre application (Web, console, DLL, etc.).

logger.Debug("Some low level debug message..."); logger.Info("Some basic info"); logger.Warn("Some business logic problem, but not critical"); logger.Error("An unexpected error"); 

ELMAH est un plug-in IIS discret spécialement conçu pour la journalisation des exceptions dans une application Web. Vous ne verrez aucune référence à ELMAH dans votre application, elle ne possède pas d’API avec laquelle vous interagissez. Il utilise les points d’extension du module et du gestionnaire IIS pour verrouiller le comportement. En outre, il dispose d’une interface Web pour afficher les erreurs survenues dans votre application Web. Log4Net ne possède pas de serveur frontal, mais une variété de puits de journal (Annexes) pouvant envoyer vos messages de journal à des éléments tels que les fichiers journaux, un serveur Syslog, une firebase database, etc.

La principale différence est que ELMAH enregistre les exceptions d’application non gérées. log4net enregistre tout ce que vous lui dites pour vous connecter. Vous pouvez configurer log4net pour enregistrer les exceptions non gérées, mais ELMAH capture une multitude d’informations utiles hors de la boîte.

ELMAH fonctionne en créant un httpmodule qui se connecte aux événements d’erreur et effectue ensuite la journalisation. Cela peut facilement être contrecarré et cassé par une mauvaise conception. Log4Net peut nécessiter un travail supplémentaire, mais si vous utilisez un framework AOP et l’appliquez à votre classe ou même à l’assembly, vous pouvez obtenir une journalisation des exceptions bien meilleure avec un minimum de code et d’effort.

ELMAH ne fonctionne que s’il a access à HttpContext, ce qui peut être difficile à obtenir dans les services WCF. Vous finirez donc par utiliser un autre enregistreur dans WCF. Pourquoi ne pas utiliser une solution plus universelle?

ELMAH:

  • application Web

Log4net:

  • application Web

  • Application Windows

Références complémentaires: ref_1 ref_2

ELMAH est spécialement utilisé pour les applications Web alors que log4net est utilisé à la fois sur les applications Web et Windows. ELMAH a beaucoup plus d’avantages que log4net dans une application Web.

ELMAH est très puissant, mais aussi très spécifique. Cela fait beaucoup de travail pour vous, mais je crois que Log4Net exige que vous fassiez la gestion des erreurs et la journalisation.