2010-11-01 12 views
12

Sto usando ELMAH nei miei progetti ASP.NET MVC e mi piace molto la sua semplicità. Ma avevo bisogno della possibilità di registrare determinati eventi nel mio codice in un modo log.Info ("messaggio"). Dato che ELMAH non fornisce questa abilità, ho iniziato a guardare a NLog.Registrazione delle eccezioni non gestite tramite NLog? ELMAH e NLog dovrebbero essere usati insieme?

Alcune domande è venuto in mente:

  1. Sta usando sia ELMAH e NLog eccessivo? Usando ELMAH per le eccezioni non gestite e NLog per tutto il resto?
  2. È possibile configurare NLog per registrare eccezioni non gestite in nlog.config o è necessario un codice personalizzato?
  3. Se è necessario un codice personalizzato, dove sarebbe il posto migliore per aggiungerlo? Il metodo OnException nel framework MVC? Il file global.asax?

Il feedback di anny è molto apprezzato. Finora non ho trovato nessun buon post su questo argomento?

risposta

4

È infatti possibile attivare un avviso da ELMAH. In questo modo:

ErrorSignal.FromCurrentContext().Raise(new System.ApplicationException("An error occured in SendEmail()", ex)); 

Non dimenticare di aggiungere un riferimento a elmah.dll e aggiungere using Elmah; al file. Vedere here per ulteriori esempi.

15

Rispondendo alla domanda numero 2, ho appena letto this article dove viene spiegato come registrare le eccezioni non gestite con NLog. Fondamentalmente si aggiunge nel file Global.asax.cs qualcosa come:

protected void Application_Error() 
{ 
    Exception lastException = Server.GetLastError(); 
    NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); 
    logger.Fatal(lastException); 
}