Quelle est la différence entre log4net et ELMAH?

certaines personnes utilisent ELMAH au lieu de log4net. Quoi est-il meilleur?

j'ai découvert ELMAH dans une réponse à la question sur le débordement de la pile Comment puis-je me connecter dans C#?

105
demandé sur Peter Mortensen 2011-02-20 17:41:59

7 réponses

ELMAH sert un but de suivi des erreurs et des exceptions pour vos applications web et vous permet de vous connecter ou de voir facilement ces exceptions via de nombreux mécanismes différents (SQL, RSS, Twitter, fichiers, e-mail, etc.). Si vous n'avez pas de gestion d'exception intégrée, ELMAH vous procurera probablement ce que vous recherchez en termes de gestion d'exception dans un environnement d'application web.

Log4net peut être utilisé pour l'enregistrement d'exception, cependant vous pourriez avoir besoin de rouler vos propres gestionnaires à brancher dans votre application web. Log4net brillera sur ELMAH si vous devez faire d'autres types de journalisation de l'information car log4net est un cadre de journalisation à usage général. Log4net peut également être utilisé dans presque toutes les applications .NET.

89
répondu Mark Coleman 2017-10-17 08:06:35

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écifiquement pour la journalisation 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 le module et le Gestionnaire IIS les points d'extension pour boulonner dans le comportement. En outre, il dispose d'un front-end web pour visualiser les erreurs qui se sont produites dans votre application web. Log4Net n'a pas de front-end, juste une variété d'éviers de log (Appenders) qui peuvent envoyer vos messages de log à des choses comme les fichiers de log, un serveur syslog, une base de données, etc.

111
répondu Mike Valenty 2011-09-18 18:52:47

la principale différence est QU'ELMAH enregistre les exceptions d'application non manipulées; log4net enregistre tout ce que vous lui demandez de faire. Vous pouvez configurer log4net pour enregistrer les exceptions non gérées, mais ELMAH capture une richesse d'informations utiles de la boîte.

35
répondu Jamie Ide 2011-02-20 16:01:41

ELMAH fonctionne en créant un httpmodule qui s'accroche aux événements d'erreur et fait ensuite la journalisation. Cela peut facilement être contrecarré et cassé par la mauvaise conception. Log4Net peut exiger un travail supplémentaire à l'avance, mais si vous utilisez un cadre AOP et l'appliquez dans votre classe ou même l'assemblage, vous pouvez obtenir une meilleure journalisation des exceptions avec très peu de code et d'effort.

ELMAH ne fonctionne que si elle a accès au contexte Httpcontexte qui peut être difficile à atteindre dans les services WCF. Si vous finirait par utiliser un autre logger dans WCF de toute façon. Pourquoi ne pas utiliser une solution plus universelle?

5
répondu Dustin Davis 2011-02-20 19:06:45

ELMAH:

  • application Web

Log4net:

  • application Web

  • application Windows

autres références: ref_1 ref_2

4
répondu Javascript is GOD 2017-10-17 08:10:50

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

1
répondu Adeel 2017-10-17 08:08:23

ELMAH est très puissant, mais aussi très spécifique dans ce qu'il fait. Il fait beaucoup de travail pour vous, alors que je crois que Log4Net a besoin de vous pour faire le traitement des erreurs et la journalisation.

0
répondu Dean Thomas 2017-10-17 08:09:43