Qual è la differenza tra log4net e ELMAH?


Risposte:


92

ELMAH ha lo scopo di tracciare errori ed eccezioni per le tue applicazioni web e ti consente di registrare o visualizzare facilmente tali eccezioni tramite molti meccanismi diversi (SQL, RSS, Twitter, file, e-mail, ecc.). Se non disponi di una gestione delle eccezioni incorporata, ELMAH molto probabilmente ti fornirà ciò che stai cercando in termini di gestione delle eccezioni in un ambiente di applicazione web.

Log4net può essere utilizzato anche per la registrazione delle eccezioni, tuttavia potrebbe essere necessario eseguire il roll dei propri gestori per collegarli all'applicazione web. Log4net brillerà su ELMAH se è necessario eseguire altri tipi di registrazione delle informazioni poiché log4net è un framework di registrazione generico. Log4net può essere utilizzato anche in quasi tutte le applicazioni .NET.


3
log4net ti dà più controllo.
DarthVader

6
Puoi ottenere il meglio da entrambi i mondi utilizzando questo appender ELMAH per log4net. Registra ciò che ti piace (debug, informazioni, avvertimento, errore) con log4net ma memorizzalo in ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

Log4Net è un framework di registrazione generico con un'API destinata all'uso all'interno dell'applicazione (web, console, dll, ecc.).

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 è un plug-in IIS discreto specifico per la registrazione delle eccezioni in un'applicazione web. Non vedrai un riferimento a ELMAH all'interno della tua applicazione, non ha un'API con cui interagisci. Utilizza i punti di estensione IIS del modulo e del gestore per bloccare il comportamento. Inoltre dispone di un front-end web per visualizzare gli errori che si sono verificati nella tua applicazione web. Log4Net non ha un front-end, solo una varietà di sink di log (Appenders) che possono inviare i tuoi messaggi di log a cose come file di log, un server syslog, un database, ecc.


23
Una correzione, Elmah ha un'API con cui lo sviluppatore può interagire. Ad esempio, la segnalazione si ottiene tramite Elmah Api.
Ed DeGagne

8
Un'altra correzione? ELMAH è un .NET HttpModule / HttpHandler. NON è un plugin IIS. ARR è un plugin. Non ELMAH.
Maxime Rouiller

Qual è la tua risposta ai commenti?
Peter Mortensen

36

La differenza fondamentale è che ELMAH registra le eccezioni dell'applicazione non gestite; log4net registra tutto ciò che gli dici di registrare. Puoi configurare log4net per registrare le eccezioni non gestite, ma ELMAH acquisisce una grande quantità di informazioni utili fuori dagli schemi.


1
ELMAH acquisisce una grande quantità di informazioni utili fuori dagli schemi, se configurate correttamente. per lo stesso periodo di tempo, puoi fare lo stesso con log4net con maggiore controllo.
DarthVader

DarthVader - hai una configurazione di esempio di log4net che fa la stessa cosa?
JasonD

5
ELMAH acquisisce una grande quantità di informazioni utili immediatamente senza alcuna configurazione. Con una configurazione aggiuntiva, gestirà sia le eccezioni non gestite che le eccezioni gestite.
Trevor de Koekkoek

5

ELMAH funziona creando un modulo HTTP che si aggancia agli eventi di errore e quindi esegue la registrazione. Questo può essere facilmente contrastato e interrotto da un cattivo design. Log4Net potrebbe richiedere un lavoro aggiuntivo in anticipo, ma se usi un framework AOP e lo applichi alla tua classe o anche all'assembly, puoi ottenere una registrazione delle eccezioni di gran lunga migliore con pochissimo codice e sforzo.

ELMAH funziona solo se ha accesso a HttpContext, che può essere difficile da ottenere nei servizi WCF. Quindi finiresti comunque per utilizzare qualche altro logger in WCF. Perché non utilizzare solo una soluzione più universale.



1

ELMAH è usato specialmente per le applicazioni web mentre log4net è usato sia per le applicazioni web che per quelle Windows. ELMAH ha molti più vantaggi rispetto a log4net in un'applicazione web.


5
Quali sono questi vantaggi? Presto farò ASP.NET, quindi vorrei conoscere la tua opinione istruita. Sono ancora un principiante in .NET, quindi è più difficile per me interpretare ciò che dicono sui loro siti.
IAdapter

Puoi visualizzare i rapporti anche senza scrivere alcun codice. Guarda le funzioni di elmah qui code.google.com/p/elmah
Adeel

Elmah è molto limitato e l'unico "vantaggio" sono i rapporti, ma è limitato alle app Web che hanno accesso a HttpContext. È possibile fare in modo che altri logger registrino i dati su molte altre fonti su cui è possibile creare rapporti.
Dustin Davis,

0

ELMAH è molto potente, ma anche molto specifico in ciò che fa. Fa molto del lavoro per te, mentre credo che Log4Net richieda che tu faccia la gestione e la registrazione degli errori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.