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 débordement de pile Comment puis-je me connecter en C #?
ELMAH permet de suivre les erreurs et les exceptions pour vos applications Web et vous permet de consigner ou de visualiser facilement ces exceptions via différents mécanismes (SQL, RSS, Twitter, fichiers, courrier électronique, etc.). Si vous n'avez pas de gestion des exceptions intégrée, ELMAH vous donnera 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. Toutefois, vous devrez peut-être utiliser vos propres gestionnaires pour vous connecter à votre application Web. Log4net brillera sur ELMAH si vous devez effectuer d'autres types de journalisation d'informations, car log4net est un cadre de journalisation à usage général. Log4net peut également être utilisé dans presque toutes les applications .NET.
Log4Net est un cadre 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");
ELMAHest un plug-in discret IIS spécialement conçu pour la journalisation exceptions dans une application Web. Vous ne verrez pas de référence à ELMAH dans votre application, elle ne dispose pas d'une API avec laquelle vous interagissez. Il utilise les points d'extension de module et de gestionnaire IIS pour intégrer le comportement. De plus, il dispose d'une interface Web permettant de visualiser les erreurs survenues dans votre application Web. Log4Net n’a pas de front-end, mais seulement une variété de récepteurs de journal (appendices) pouvant envoyer vos messages de journal à des fichiers tels que les fichiers journaux, un serveur Syslog, une base de données, etc.
La principale différence est qu'ELMAH enregistre les exceptions d'application non gérées; log4net enregistre tout ce que vous lui dites de vous connecter. Vous pouvez configurer log4net pour journaliser les exceptions non gérées, mais ELMAH capture une multitude d'informations utiles immédiatement.
ELMAH fonctionne en créant un httpmodule qui se connecte aux événements d'erreur et enregistre ensuite. Cela peut facilement être contrecarré et brisé par une mauvaise conception. Log4Net peut nécessiter du travail supplémentaire au départ, mais si vous utilisez un framework AOP et que vous l'appliquez à votre classe ou même à l'Assemblée, vous pouvez obtenir une journalisation des exceptions bien meilleure avec très peu de code et d'effort.
ELMAH ne fonctionne que s'il a accès à HttpContext, ce qui peut être difficile à obtenir dans les services WCF. De toute façon, vous utiliseriez de toute façon un autre enregistreur dans WCF. Pourquoi ne pas utiliser une solution plus universelle.
ELMAHest spécialement utilisé pour les applications Web, tandis que log4net est utilisé à la fois sur les applications Web et Windows. ELMAH présente beaucoup plus d’avantages que log4net dans une application Web.
ELMAH est très puissant, mais aussi très spécifique dans ce qu'il fait. Cela fait beaucoup de travail pour vous, alors que je pense que Log4Net a besoin de vous pour gérer les erreurs et se connecter.