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 #?
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 #?
Réponses:
ELMAH sert à suivre les erreurs et les exceptions pour vos applications Web et vous permet de facilement enregistrer ou afficher ces exceptions via de nombreux mécanismes différents (SQL, RSS, Twitter, fichiers, e-mail, etc.). Si vous n'avez pas de gestion des exceptions intégrée, ELMAH vous fournira 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 un cadre de journalisation à usage général. Log4net peut également être utilisé dans presque toutes les applications .NET.
Log4Net est un framework 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 plugin IIS discret spécialement pour la journalisation des exceptions dans une application Web. Vous ne verrez pas de référence à ELMAH dans votre application, elle n'a pas d'API avec laquelle vous interagissez. Il utilise les points d'extension IIS du module et du gestionnaire pour verrouiller le comportement. En outre, il dispose d'un frontal Web pour afficher les erreurs qui se sont produites dans votre application Web. Log4Net n'a pas de frontal, juste une variété de récepteurs de journaux (Appenders) qui peuvent envoyer vos messages de journal à des éléments tels que des fichiers journaux, un serveur syslog, une base de données, etc.
La principale différence est que ELMAH enregistre les exceptions d'application non gérées; log4net enregistre tout ce que vous lui demandez d'enregistrer. Vous pouvez configurer log4net pour enregistrer les exceptions non gérées, mais ELMAH capture une mine d'informations utiles prêtes à l'emploi.
ELMAH fonctionne en créant un module HTTP qui se connecte aux événements d'erreur, puis se connecte. Cela peut facilement être contrecarré et brisé par une mauvaise conception. Log4Net peut nécessiter un travail supplémentaire au départ, mais si vous utilisez un framework AOP et que vous l'appliquez à travers votre classe ou même l'assembly, 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 à réaliser dans les services WCF. De toute façon, vous finiriez par utiliser un autre enregistreur dans WCF. Pourquoi ne pas utiliser simplement une solution plus universelle.
ELMAH est spécialement utilisé pour les applications Web tandis que log4net est utilisé à la fois sur les applications Web et Windows. ELMAH présente bien 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. Il fait une grande partie du travail pour vous, alors que je pense que Log4Net vous oblige à gérer les erreurs et à enregistrer.