109 votes

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 en une réponse à une question de Stack Overflow Comment faire de la journalisation en C# ?

0 votes

Duplicata possible de stackoverflow.com/questions/800009/

0 votes

Maintenant que .net core est dans le tableau, le scénario change-t-il ? (elmah ne prend pas en charge .net core à partir de janvier 2018).

111voto

Michael Valenty Points 5482

Log4Net est un cadre général de journalisation 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 conçu pour l'enregistrement des données. exceptions dans une application web. Vous ne verrez pas de référence à ELMAH dans votre application, il n'a pas d'API avec laquelle vous interagissez. Il utilise les points d'extension IIS module et handler pour verrouiller le comportement. En outre, il dispose d'une interface Web permettant de visualiser les erreurs survenues dans votre application Web. Log4Net n'a pas de frontal, juste une variété de puits de log (Appenders) qui peuvent envoyer vos messages de log vers des choses comme des fichiers de log, un serveur syslog, une base de données, etc.

23 votes

Une correction, Elmah a bien une Api avec laquelle le développeur peut interagir. Par exemple, la signalisation est réalisée par l'Api Elmah.

8 votes

Une autre correction ? ELMAH est un HttpModule/HttpHandler .NET. Ce n'est PAS un plugin IIS. ARR est un plug-in. Pas ELMAH.

0 votes

Quelle est votre réponse aux commentaires ?

92voto

Mark Coleman Points 24469

ELMAH a pour but de suivre les erreurs et les exceptions de vos applications Web et vous permet de consigner ou de visualiser facilement ces exceptions via différents mécanismes (SQL, RSS, Twitter, fichiers, courriel, etc.). Si vous n'avez pas de gestion des exceptions intégrée, ELMAH vous apportera très 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 créer vos propres gestionnaires pour les intégrer à votre application Web. Log4net sera plus performant que ELMAH si vous avez besoin de faire d'autres types de journalisation d'informations, car Log4net est un cadre de journalisation général. Log4net peut également être utilisé dans presque toutes les applications .NET.

3 votes

Log4net vous donne plus de contrôle.

6 votes

Vous pouvez obtenir le meilleur des deux mondes en utilisant cet Appender ELMAH pour log4net. Enregistrez ce que vous voulez (debug, info, warn, error) avec log4net mais stockez-le dans ELMAH. nuget.org/packages/elmahappender_log4net_1.2.10

36voto

Jamie Ide Points 28680

La principale différence est que ELMAH enregistre les exceptions d'application non gérées ; log4net enregistre ce que vous lui demandez d'enregistrer. Vous pouvez configurer log4net pour qu'il enregistre les exceptions non gérées, mais ELMAH capture d'emblée une multitude d'informations utiles.

1 votes

ELMAH capture une multitude d'informations utiles dès le départ, si vous le configurez correctement. Pour le même temps, vous pouvez faire la même chose avec log4net avec plus de contrôle.

0 votes

DarkVader - avez-vous un exemple de configuration de log4net qui fait la même chose ?

5 votes

ELMAH capture une multitude d'informations utiles dès sa sortie de l'emballage, sans aucune configuration. Avec une configuration supplémentaire, il traitera les exceptions non gérées et les exceptions gérées.

5voto

DustinDavis Points 7808

ELMAH fonctionne en créant un module HTTP qui s'accroche 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 au départ, mais si vous utilisez un cadre AOP et que vous l'appliquez à l'ensemble de votre classe ou même à l'assemblage, vous pouvez obtenir une bien meilleure journalisation des exceptions avec très peu de code et d'efforts.

ELMAH ne fonctionne que s'il a accès à HttpContext, ce qui peut être difficile à réaliser dans les services WCF. Donc vous finirez par utiliser un autre logger dans WCF de toute façon. Pourquoi ne pas simplement utiliser une solution qui est plus universelle.

4voto

99tm Points 19742

ELMAH :

  • Application web

Log4net :

  • Application web

  • Application Windows

Références supplémentaires : ref_1 réf_2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X