Alcune persone usano ELMAH invece di log4net. Cosa lo rende migliore?
Ho scoperto ELMAH in una risposta alla domanda di Stack Overflow Come faccio ad accedere in C #?
Alcune persone usano ELMAH invece di log4net. Cosa lo rende migliore?
Ho scoperto ELMAH in una risposta alla domanda di Stack Overflow Come faccio ad accedere in C #?
Risposte:
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.
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.
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.
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.
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.
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.